NULL と DEFAULT の扱い
NULL と DEFAULT を含む行を CSV にする例です。どちらも空欄になることと、NULL は情報、DEFAULT は警告で知らされる違いを確かめます。
入力
SQL
INSERT INTO t (a, b, c) VALUES (1, NULL, DEFAULT)
NULL の書き方
空欄にする
結果
エラー 0 件・警告 1 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 値 NULL を 1 個、空欄にしました。CSV では NULL と空文字列を区別できません。区別したいときは「NULL の書き方」を NULL にします。
- 警告 値 DEFAULT を 1 個、空欄にしました。DEFAULT は実行時に表の既定値が入る指定で、CSV にできる値がありません(INSERT 文書)。
| 表名 | t |
|---|---|
| データ行数 | 1 行 |
| 列数 | 3 列 |
| INSERT 文の数 | 1 個 |
復元した CSV
a,b,c 1,,
検算(この結果になる理由)
NULL は値がないことを表し、CSV では空欄になります。DEFAULT は実行時に既定値が入る指定で CSV の値にならないため空欄です(INSERT 文書)。出力は a,b,c / 1,, の 2 行で、情報 1 件と警告 1 件が出ます。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- リテラルの値だけを読みます。関数呼び出し・計算式・型変換(::)を含む値と、INSERT ... SELECT・DEFAULT VALUES は判定不能で、その欄は空にします。
- 列名のリストを省略した INSERT は、見出しを col1・col2 … にします。実際の列名は表の定義がないと分かりません。
- 表または列の並びが最初の INSERT と違う文は、1 つの CSV にできないため含めません。
- 改行は LF(\n)で出力します。RFC 4180 は CRLF ですが、多くの表計算ソフトは LF も読み込めます。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。