SQL*Loaderでスペースのみの場合はNULLとして取り込むサンプルです。
サンプル
以下のCSVファイルから、以下のテーブルにロードします。
- (test.csv)
- 名称1,名称2,名称3 テスト1,___,___
_は半角スペースと読み替えてください。
制御ファイル(ctlファイル)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
OPTIONS (SKIP=1) --1行目は取り込まない(タイトル行のため) LOAD DATA CHARACTERSET JA16SJIS --文字コードはSJIS INFILE 'C:¥test.csv' --取り込みファイル TRUNCATE --テーブルをTRUNCATEしてから取り込む INTO TABLE tbl_test --テーブル名 FIELDS TERMINATED BY ',' --区切り文字はカンマ TRAILING NULLCOLS --データなしの場合はNULLにする ( --テーブルの列 NAME1, NAME2, NAME3 NULLIF NAME3=BLANKS --NAME3はブランクの場合はNULLとして取り込む ) |
実行コマンド
- 実行例
- C:¥>sqlldr usr01/usr01@db01 control=c:¥test.ctl
実行結果
NAME1 | NAME2 | NAME3 |
---|---|---|
テスト1 | _____ | NULL |
_は半角スペースと読み替えてください。
NULLIF~を指定していないNAME2はブランクのままセットされますが、
NAME3はNULLになっていることが分かります。
解説
- ブランク(スペースのみの値)はNULLとして取り込みたい場合は、
「NULLIF <カラム名>=BLANKS」を指定すればOKです。