質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

464閲覧

jsonの内容を自動的に展開して、mysql のカラムに追加することはできませんでしょうか?

dame-dame

総合スコア78

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2021/11/18 08:51

いま https://developer.am.mufg.jp/fund_information_all_latest から
投資信託のファンド情報を取得しています

上記のURLから下記のようにJSONをdoc というカラムにぶっこむことはできました
イメージ説明
しかしながら、そのJSONの中身を見てみると、一つのファンドにつき、

json

1nav_min_3y: "11196", 2netassets_change_cmp_prev_day: "-1.43", 3risk_min_full: "0.45", 4nav_min_1y_dt: "20201118", 5risk_min_1m: "3.80", 6percentage_change_1m: "1.00", 7percentage_change_max_full: "98.35", 8percentage_change_max_3y: "37

、、、、と一つのファンドにつき合計で70くらいの値があります。

doc というカラムから一つ一つjsonから一つのファンドごとに、 カラム作って、それを値を入れて、、、
みたいな処理をすると結構なコードの量になってしまうと思います。

このjson の値を自動的に展開して下記のようなテーブルをつくることはできませんでしょうか?(実際はカラムは70個以上あるという前提です)
イメージ説明

json で得られる値全てに処理を書いていくのできないことはないですが
しんどいです

よろしくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/11/18 10:04

MySQLのバージョンは?
dame-dame

2021/11/18 10:05

8.0.27 となります。
guest

回答2

0

JSON_TABLE関数が使えるならある程度まで調整可能だと思います
mariaDBだと10.6以降対応のようなのでXAMPPだと10.4レベルなので使えないようですが・・

投稿2021/11/18 10:43

yambejp

総合スコア115012

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/11/18 11:41

プロシージャでごにょごにょやれば行けそうな気がしますが・・・
guest

0

ベストアンサー

こんばんは、天使です。

トリガーを使用してみてはいかがでしょうか?

トリガーを作成する(CREATE TRIGGER文)
MySQLのJSONをテーブルに変換して集計等を行う

投稿2021/11/18 09:20

angel-sun

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dame-dame

2021/11/18 11:21

JSON_TABLE() を使ったとしても、70個くらいの項目があるのでひとつひとつそれに対する columns ( nav_min_3y int path '$.nav_min_3y', netassets_change_cmp_prev_day: varchar(64) path '$.netassets_change_cmp_prev_day:' みたいな感じで処理を70個くらい書かなくてはならないということですよね?  それもめんどくさいとなると、もっといい方法はありますでしょうか? )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問