JSON → SQL INSERT変換

JSON配列やオブジェクトをSQL INSERT文に変換。複数ダイアレクト、バルクインサート、CREATE TABLE生成に対応。

このツールについて

JSON → SQL INSERT変換ツールは、JSONデータからすぐに使えるSQL INSERT文を 生成する無料のブラウザベースユーティリティです。REST APIのレスポンスを リレーショナルデータベースに移行する場合、JSONフィクスチャファイルから開発用 データベースにシードデータを投入する場合、統合テストのテストデータを準備する 場合など、面倒なSQLの手書き作業を大幅に省力化できます。

Standard SQL、MySQL、PostgreSQL、SQLite、SQL Serverの5つのSQLダイアレクトに 対応しています。各ダイアレクトは独自の識別子引用規則とUpsert構文を使用するため、 生成されたSQLはデータベースクライアントやマイグレーションスクリプトにそのまま 貼り付けて使用できます。MySQLはバッククォート引用、SQL Serverは角括弧、 PostgreSQLとSQLiteはダブルクォート識別子を使用します。

3つのインサートモードが利用可能です。個別INSERTは1行につき1つの文を生成し、 デバッグに最も安全な選択肢です。バルクINSERTモードは複数の行を1つのVALUES句に まとめ、バッチサイズ(50、100、500、1000行)を設定できるため、大量データの インポートが大幅に高速化されます。Upsertモードは、PostgreSQL/SQLiteでは INSERT...ON CONFLICT、MySQLではINSERT...ON DUPLICATE KEY UPDATE、SQL Serverでは MERGE文を生成し、べき等なデータロードを実現します。

すべての処理はネイティブJavaScriptを使用してブラウザ内で完結します。データが外部に 送信されることは一切ありません。サーバーとの通信、ログ記録、サードパーティサービスの 利用は行われません。CREATE TABLE生成のための自動型推論、カラム選択チェックボックス、 SQLインジェクション防止のための適切な値エスケープ、シンタックスハイライト出力 などの機能も搭載しています。

使い方

  1. 入力パネルにJSONオブジェクトの配列(または単一のJSONオブジェクト)を貼り付けます。Sampleをクリックするとサンプルデータを読み込めます。
  2. テーブル名を対象データベーステーブルに合わせて設定します。
  3. お使いのデータベースに合ったSQLダイアレクトを選択します(MySQL、PostgreSQL、SQLite、SQL Server、またはStandard SQL)。
  4. インサートモードを選択します:1行ずつの個別INSERT、複数行をまとめるバルクINSERT、またはコンフリクト対応のUpsert。
  5. カラム選択チェックボックスで、出力に含めるカラムや除外するカラムを選択します。
  6. CREATE TABLEを含むを有効にすると、自動推論されたカラム型でDDL文を生成できます。
  7. Copyをクリックして生成されたSQLをクリップボードにコピーするか、 Ctrl+Shift+C のキーボードショートカットを使用します。

JSON → SQL変換の人気サンプル

すべてのJSON → SQL変換サンプルを見る →

よくある質問

入力として受け付けるJSONフォーマットは何ですか?

このツールは2つのフォーマットを受け付けます:JSONオブジェクトの配列(例:[{"id": 1}, {"id": 2}])または単一のJSONオブジェクト(例:{"id": 1, "name": "Alice"})。単一オブジェクトは自動的に配列でラップされます。各オブジェクトが1行を表し、オブジェクトのキーがカラム名になります。オブジェクト間でキーが異なっていても構いません。欠落したキーはNULLとして扱われます。

データは安全ですか?

はい。すべての変換はJavaScriptを使用してブラウザ内で完全に行われます。JSONデータが外部に送信されることはありません。ネットワークリクエスト、ログ記録、サードパーティサービスの利用は一切ありません。認証情報や顧客データなど機密情報を含むファイルの変換にも安全にお使いいただけます。

文字列値内の特殊文字はどのように処理されますか?

文字列値はSQLインジェクションを防ぐために適切にエスケープされます。値内のシングルクォートは二重化してエスケープされます(例:O'BrienはO''Brienになります)。ダブルクォートモードに切り替えた場合も同様にエスケープされます。ネストされたJSONオブジェクトや配列はJSON文字列にシリアライズされ、適切にエスケープされます。

個別INSERTとバルクINSERTモードの違いは何ですか?

個別モードは1行につき1つのINSERT INTO ... VALUES (...)文を生成します。デバッグが容易で、あらゆるSQLクライアントで動作します。バルクモードは複数行を1つのINSERT INTO ... VALUES (...), (...), (...)文にまとめるため、データベースへのラウンドトリップが減り、大量インポートが大幅に高速化されます。バッチサイズセレクターで1文あたりの行数を制御できます。

Upsertモードは各SQLダイアレクトでどのように動作しますか?

Upsertモードはコンフリクト対応のINSERT文を生成します。PostgreSQLとSQLiteではINSERT ... ON CONFLICT (...) DO UPDATE SET、MySQLではINSERT ... ON DUPLICATE KEY UPDATE、SQL ServerではMERGE文を使用します。デフォルトでは最初のカラムがコンフリクト/マッチキーとして使用されます。

CREATE TABLEの型推論はどのように動作しますか?

「CREATE TABLEを含む」トグルを有効にすると、ツールは各カラムのすべての値を分析してSQL型を推論します。文字列はVARCHAR(255)(必要に応じてそれ以上)、整数はINTEGER、浮動小数点数はDECIMAL(10,2)、ブーリアンはBOOLEAN(MySQLではTINYINT(1)、SQL ServerではBIT)、ネストされたオブジェクト/配列はTEXTにマッピングされます。null値を含むカラムはnullable指定になります。

特定のカラムを生成されるSQLから除外できますか?

はい。有効なJSONを貼り付けると、検出されたすべてのカラムがチェックボックス付きで表示されるカラム選択パネルが表示されます。INSERT文とCREATE TABLE定義から除外したいカラムのチェックを外してください。「すべて選択」と「すべて解除」リンクで一括切り替えができます。

関連ツール