API経由でJSONデータを引っ張ってきて、それをmysql で加工しようと
試しています
下記のようにchmour というテーブルのdoc というカラムにJSONテーブルのデータを全部とってきてそこから、必要な情報だけを抜き出すという手法をとっています
doc 内の、JSONテーブルの形式は下記のとおりです
{ "data": [{ "id": 1, "name": "Bitcoin", "quote": { "USD": { "price": 50745.24480022681, "market_cap": 958753354313.7828, "volume_24h": 37965306392.15267, "last_updated": "2021-12-06T22:59:02.000Z", } }, "symbol": "BTC", "cmc_rank": 1, }, { "id": 1027, "name": "Ethereum", "quote": { "USD": { "price": 4334.1504220897505, "market_cap": 514176609462.0679, "volume_24h": 28112292707.388912, "last_updated": "2021-12-06T22:59:02.000Z", } }, "symbol": "ETH", "cmc_rank": 2, }, { "id": 1839, "name": "Binance Coin", "quote": { "USD": { "price": 590.2309630072833, "market_cap": 98451202214.7604, "volume_24h": 3527768619.2824636, "last_updated": "2021-12-06T22:58:10.000Z", } }, "symbol": "BNB", }, { "id": 825, "name": "Tether", "quote": { "USD": { "price": 1.000946758016139, "market_cap": 75586848900.55356, "volume_24h": 93186929423.50182, "last_updated": "2021-12-06T22:58:09.000Z", } },
、、、でこの中で data >>> quote >>> USD のデータの中から price と last_updated だけを拾いたいのですが
下記のSQLを叩いてみても何も取れない状態です
sql
1select cmhoursum.* 2 from cmhour , JSON_TABLE( 3 `doc`, 4 "$.data.quote.USD[*]" 5 columns ( 6 カラム名 double path '$.price', 7 カラム名2 double path '$.last_updated' 8 ) 9) cmhoursum;
下記のようにカラムに何も表示されません
doc のカラムにたくさんJSONデータがあるとはいえ、 "$.data.quote.USD[*]" の中から必要なデータは
上記のSQLの式で取得はできないのでしょうか?
もしかしてデータ量が多すぎるとselect文が機能しないとかありますでしょうか
私の理解が間違っていたら教えていただきたいと思います
あなたの回答
tips
プレビュー