Bulk INSERTでのNULL値の処理
JSONのnull値をSQL INSERT文で処理する3つの戦略:NULLキーワード、カラムスキップ、DEFAULTキーワード。それぞれの使い分けを解説します。
Data Types
詳細な説明
NULLハンドリング戦略
JSONのnull値はSQL生成時に特別な処理が必要です。Bulk INSERTツールは3つの戦略を提供しており、それぞれ異なるシナリオに適しています。
戦略1:NULLキーワード(デフォルト)
null JSONの値にSQLのNULLリテラルを挿入します:
INSERT INTO "users" ("id", "name", "department")
VALUES
(1, 'Alice', 'Engineering'),
(2, 'Bob', NULL),
(3, 'Charlie', NULL);
使用場面: カラムがNULLを許可しており、明示的にNULLを格納したい場合。
戦略2:DEFAULTキーワード
SQLのDEFAULTキーワードを使用し、カラムのデフォルト値を適用します:
INSERT INTO "users" ("id", "name", "department")
VALUES
(1, 'Alice', 'Engineering'),
(2, 'Bob', DEFAULT),
(3, 'Charlie', DEFAULT);
使用場面: テーブルにカラムのデフォルト値がある場合(例:department VARCHAR(100) DEFAULT 'Unassigned')で、JSONのnull値でデータベースのデフォルトをトリガーしたい場合。
戦略3:カラムスキップ
null値を持つ行でカラムを完全に省略します。ただし、Bulk INSERTではすべての行で一貫したカラムリストが必要なため、個別INSERTモードでのみ機能します。
使用場面: 行ごとのカラムリストが必要で、Bulkモードを使用できない場合。
比較表
| 戦略 | JSONのnull値の変換先 | Bulk互換 | DBデフォルト使用 |
|---|---|---|---|
| NULLキーワード | NULL |
はい | いいえ |
| DEFAULTキーワード | DEFAULT |
はい | はい |
| カラムスキップ | カラム省略 | いいえ(個別のみ) | はい |
混合Null
JSONデータに一貫性のないキーがある場合(一部のオブジェクトに特定のプロパティがない場合)、欠落したキーは明示的なnullと同じように扱われます。ツールはデータからNULL可能性を検出し、推論された型情報でカラムをNULL可能としてマークします。
ユースケース
CRMからのJSONエクスポートに「phone」や「address」などのオプションフィールドのnull値がある場合。NULLキーワード戦略を使用することで、データベースで「値なし」と「空文字列」の明示的な区別を保持できます。