JSONからSQLを生成する — 型推論とINSERT文の自動化
APIレスポンスやCSVから変換したJSONデータをデータベースに投入したい場面は多くあります。手動でCREATE TABLEとINSERT文を書くのは手間がかかりますが、このツールを使えばJSONを貼るだけで自動生成できます。
型推論の仕組み
各カラムの値を全行スキャンしてSQL型を決定します。すべての値が整数なら INTEGER、浮動小数点数があれば REAL、文字列があれば TEXT、true/falseのみなら BOOLEAN として推論します。型が混在する場合は最も広い型(TEXT)が選ばれます。null値を含む行があるカラムはNULL許容(NOT NULL なし)になります。
方言ごとの違い
PostgreSQLとSQLiteはダブルクォートでカラム名・テーブル名を囲みますが、MySQLはバッククォートを使います。BOOLEAN型はPostgreSQL/SQLiteではTRUE/FALSEリテラルを使いますが、MySQLはTINYINT(1)で0/1で格納します。浮動小数点数はMySQLではDOUBLEが一般的なので自動的に変換されます。
スキーマ名の活用
PostgreSQLでは`public.users`のようにスキーマ名を指定してテーブルを整理します。スキーマ名フィールドを入力すると`"schema"."table"`形式でCREATE TABLEとINSERT文が生成されます。MySQLの場合はデータベース名を指定することで`database`.`table`形式になります。
大量データの投入
生成されたINSERT文は全行を1つのINSERT INTO ... VALUES(...),(...),(...)形式(マルチロウINSERT)ではなく、行ごとに分けています。これにより1行ずつ実行して部分的にデバッグしやすくなります。大量データの本番投入にはPSQLのCOPYやMySQLのLOAD DATA INFILEがより高速です。