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文で使う時と同じです。詳しくは以下関連記事をご覧ください。