>_devtools-hub

JSON to SQL

JSON配列からCREATE TABLE + INSERT文を自動生成 — MySQL/PostgreSQL/SQLite対応

開発者向けJSONデータベース

JSONオブジェクトの配列を入力するだけで、型推論付きのCREATE TABLE文とINSERT INTO文を自動生成。TEXT/INTEGER/REAL/BOOLEAN/NULLを自動判定し、MySQL・PostgreSQL・SQLiteの3方言に対応。テーブル名・スキーマ名も指定できます。

広告

JSON → SQL Generator

JSON Input(配列)
SQL Output

JSON配列を入力するとSQLが生成されます

Features

  • JSON配列からCREATE TABLE文を自動生成(型推論付き)
  • TEXT / INTEGER / REAL / BOOLEAN の4型を自動判定
  • NULL値を含むカラムは自動的に NULL 許容に設定
  • 全行のINSERT INTO文を一括生成
  • MySQL / PostgreSQL / SQLite の3方言を切り替え
  • テーブル名・スキーマ名をカスタマイズ可能
  • SQLをワンクリックでコピー


JSONからSQLを生成する — 型推論とINSERT文の自動化

APIレスポンスやCSVから変換したJSONデータをデータベースに投入したい場面は多くあります。手動でCREATE TABLEとINSERT文を書くのは手間がかかりますが、このツールを使えばJSONを貼るだけで自動生成できます。

型推論の仕組み

各カラムの値を全行スキャンしてSQL型を決定します。すべての値が整数なら INTEGER、浮動小数点数があれば REAL、文字列があれば TEXT、true/falseのみなら BOOLEAN として推論します。型が混在する場合は最も広い型(TEXT)が選ばれます。null値を含む行があるカラムはNULL許容(NOT NULL なし)になります。日付・時刻のISO 8601文字列(2024-01-15など)はデータベースによってTIMESTAMP型を推論することもあります。カラム名にidやIdが含まれる場合は自動でPRIMARY KEY候補として扱うことがあります。生成後のCREATE TABLE文はそのままSQLクライアントに貼り付けて実行できます。

方言ごとの違い

PostgreSQLとSQLiteはダブルクォートでカラム名・テーブル名を囲みますが、MySQLはバッククォートを使います。BOOLEAN型はPostgreSQL/SQLiteではTRUE/FALSEリテラルを使いますが、MySQLはTINYINT(1)で0/1で格納します。浮動小数点数はMySQLではDOUBLEが一般的なので自動的に変換されます。自動採番のPRIMARY KEYはPostgreSQLではSERIALまたはGENERATED ALWAYS AS IDENTITY、MySQLではAUTO_INCREMENT、SQLiteではINTEGER PRIMARY KEY(rowid のエイリアス)でそれぞれ定義方法が異なります。文字列の最大長もPostgreSQL/MySQLではVARCHAR(255)など指定しますが、SQLiteは長さ制限がなくTEXTのみで事足ります。

スキーマ名の活用

PostgreSQLでは`public.users`のようにスキーマ名を指定してテーブルを整理します。スキーマ名フィールドを入力すると`"schema"."table"`形式でCREATE TABLEとINSERT文が生成されます。MySQLの場合はデータベース名を指定することで`database`.`table`形式になります。PostgreSQLのスキーマはデータベース内の名前空間で、テナント分離(テナントごとにスキーマを切り替える)やモジュール分割(auth・billing・notificationなど)に活用されます。search_pathを設定すれば毎回スキーマ名を書かずにアクセスできます。SQLiteにはスキーマ概念がなく、ATTACHコマンドで複数データベースを接続する方法で代替します。

大量データの投入

生成されたINSERT文は全行を1つのINSERT INTO ... VALUES(...),(...),(...)形式(マルチロウINSERT)ではなく、行ごとに分けています。これにより1行ずつ実行して部分的にデバッグしやすくなります。大量データの本番投入にはPostgreSQLの\COPYやMySQLのLOAD DATA INFILEがCSVを直接読み込めるためより高速です。PostgreSQLではCOPY users FROM 'data.csv' CSV HEADERで数百万件のインポートも数秒で完了します。Node.jsではpg-copystreamsライブラリ、Pythonではpsycopgのcopy_expertメソッドを使って大量データをストリーミングINSERTできます。

広告

Related Tools

base64-studio

Base64 エンコード & デコード

開発者向けテキストエンコード

使ってみる →

BOOTH

JSON Studio

JSON フォーマッター & バリデーター

JSON開発者向けフォーマッター

使ってみる →

BOOTH

color-deck

カラーコード変換 & パレット保存

カラーデザイン開発者向け

使ってみる →

BOOTH

text-deck

スニペットランチャー

テキスト効率化開発者向け

使ってみる →

BOOTH

このツールを共有する