ablog

不器用で落着きのない技術者のメモ

Redshift の COPY コマンドにおける Null の扱い

EMPTYASNULL
Amazon Redshift で CHAR と VARCHAR の空のフィールドを NULL としてロードすることを指定します。INT など、他のデータ型の空のフィールドは常に NULL でロードされます。データに 2 つの区切り記号が連続し、区切り記号の間に文字がない場合、空のフィールドになります。EMPTYASNULL と NULL AS '' (空の文字列) は同じ動作を生成します。

(中略)

NULL AS 'null_string'

null_string に一致するフィールドを NULL としてロードします。ここで null_string は任意の文字列です。データに null ターミネータ (NUL (UTF-8 0000) またはバイナリゼロ (0x000) と呼ばれることもあります) が含まれる場合、COPY はそれを他の文字として扱います。例えば、'1' || NUL || '2' を含むレコードは長さ 3 バイトの文字列としてコピーされます。フィールドに NUL のみが含まれている場合は、NULL AS を使用して、'\0' または '\000' (例えば、NULL AS '\0' または NULL AS '\000') を指定することにより、null ターミネータを NULL に置き換えることができます。フィールドに NUL で終わる文字列が含まれており、NULL AS を指定した場合、文字列の最後に NUL が挿入されます。null_string 値に '\ n' (改行) を使用しないでください。Amazon Redshift は、行区切り文字として使用するために '\n' を予約します。デフォルトの null_string は '\N' です。

データ変換パラメータ - Amazon Redshift