SQL*Loaderで値をNVLして取り込むサンプルです。
サンプル
例として、以下のCSVファイルからロードします。
- (C:¥syohin.csv)
- 商品,単価,個数 みかん,50,35 りんご,180, ぶどう,,35
制御ファイル(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:¥syohin.csv' --取り込みファイル TRUNCATE --テーブルをTRUNCATEしてから取り込む INTO TABLE M_SYOHIN --テーブル名 FIELDS TERMINATED BY ',' --区切り文字はカンマ TRAILING NULLCOLS --データなしの場合はNULLにする ( --テーブルの列 NAME, TANKA "NVL(:TANKA, 500)", --TANKAがNULLの場合は500として取り込む KOSU "NVL(:KOSU, 0)" --KOSUがNULLの場合は0として取り込む ) |
11、12行目がNVLを行っている箇所です。
実行コマンド
- 実行例
- C:¥>sqlldr usr01/usr01@db01 control=c:¥syohin.ctl
実行結果
NAME | TANKA | KOSU |
---|---|---|
みかん | 50 | 35 |
りんご | 180 | 0 |
ぶどう | 500 | 35 |
_は半角スペースと読み替えてください。
りんごの個数と、ぶどうの単価が置き換えられています。
解説
- 値をNVLして取り込みたい場合は、
「"NVL(:<カラム名>, <置換したい値>)"」を指定すればOKです。