SQL*Loaderで値を切り取ってロードするには、
SUBSTRを使用します。
サンプル
以下のCSVファイルからロードしてみます。
- (test.csv)
 - COL1,COL2,COL3 ABCDEFGHIJ,1234567890,あいうえお ABCDEFGHIJ,1234567890,かきくけこ
 
制御ファイル(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にする (                           --テーブルの列   COL1 "SUBSTR(:COL1, 0, 5)",  --先頭から5文字目までをINSERTする   COL2 "SUBSTR(:COL2, 6)",     --6文字目から末尾までをINSERTする   COL3 "SUBSTR(:COL3, 0, 3)",  --先頭から3文字目までをINSERTする )  | 
					
実行コマンド
- 実行例
 - C:¥>sqlldr usr01/usr01@db01 control=c:¥test.ctl
 
実行結果
| COL1 | COL2 | COL3 | 
|---|---|---|
| ABCDE | 67890 | あいう | 
| ABCDE | 67890 | かきく | 
解説
- 値を切り取って取り込みたい場合は、「"SUBSTR"」を使用すればOKです。
 - バイト数で切り取りたい場合は、「"SUBSTRB"」を使用できます。
 - SUBSTR、SUBSTRBの使い方はSQL文で使う時と同じです。詳しくは以下関連記事をご覧ください。