JSON配列から基本的なBulk INSERTを生成する

シンプルなJSON配列を複数行のBulk INSERT文に変換する方法を学びます。カラム検出、値のフォーマット、複数行VALUES構文を解説します。

Basic INSERT

詳細な説明

JSON配列からBulk INSERTへ

最も基本的なBulk変換は、JSONオブジェクトの配列を受け取り、複数の値行を持つ単一のINSERT INTO ... VALUES文を生成します。各JSONオブジェクトが1行となり、キーがカラム名になります。

JSONの例

[
  { "id": 1, "name": "Alice", "email": "alice@example.com" },
  { "id": 2, "name": "Bob", "email": "bob@example.com" },
  { "id": 3, "name": "Charlie", "email": "charlie@example.com" }
]

生成されるSQL

INSERT INTO users ("id", "name", "email")
VALUES
  (1, 'Alice', 'alice@example.com'),
  (2, 'Bob', 'bob@example.com'),
  (3, 'Charlie', 'charlie@example.com');

なぜBulk INSERTなのか?

単一の複数行INSERTは、個別のINSERT文と比較して劇的に高速です。その理由は:

  • ラウンドトリップの削減: データベースがN個の文ではなく1つの文を解析・実行する
  • トランザクション効率: 単一の暗黙的トランザクションですべての行をラップ
  • インデックス最適化: データベースがインデックス更新をバッチ処理できる
  • ネットワーク節約: N個のパケットの代わりに1つのパケットで送信

型のハンドリング

JSON型 SQL表現
string シングルクォートされたリテラル
number クォートなしの数値リテラル
boolean TRUE / FALSE
null NULL
object/array JSONシリアライズされた文字列

ツールはデータからSQL型を自動的に推論するため、混合型のデータセットでもシームレスに変換できます。

ユースケース

APIからJSON形式でエクスポートしたユーザーデータをPostgreSQLデータベースにインポートする必要がある場合。個別のINSERT文を書く代わりに、Bulkフォーマットを使えばすべてのレコードを1つの効率的な文でインポートできます。

試してみる — JSON to Bulk INSERT

フルツールを開く