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つの効率的な文でインポートできます。