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キーワード戦略を使用することで、データベースで「値なし」と「空文字列」の明示的な区別を保持できます。

試してみる — JSON to Bulk INSERT

フルツールを開く