SQL*LoaderでTSVファイルからデータを取り込むサンプルです。
TSVファイルとは、タブ区切りテキストデータのことです。
(CSVファイルのカンマがタブになったものです。)
前提
以下のTSVファイルから、以下のテーブルにロードします。
- (商品マスタ.tsv)
- 商品コード_商品名_単価_適用日 1001_みかん_30_2021/1/1 1002_りんご_100_2021/1/2 1003_バナナ_200_2021/1/3
「_」はタブ文字に読み替えてください。
列名 | 型 |
---|---|
CD | CHAR(4) |
NAME | VARCHAR2(20) |
PRICE | NUMBER(5,0) |
TEKIYO | DATE |
サンプル
8行目の指定がTSVファイルを読み込む指定です。
制御ファイル(ctlファイル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
OPTIONS (SKIP=1) --1行目は取り込まない(タイトル行のため) LOAD DATA CHARACTERSET JA16SJIS --文字コードはSJIS INFILE 'C:¥商品マスタ.tsv' --取り込みファイル BADFILE 'C:¥商品マスタ.bad' --batファイル TRUNCATE --テーブルをTRUNCATEしてから取り込む INTO TABLE 商品マスタ --テーブル名 FIELDS TERMINATED BY '¥t' --区切り文字はカンマ TRAILING NULLCOLS --データなしの場合はNULLにする ( --テーブルの列 CD, NAME, PRICE, TEKIYO ) |
実行コマンド
- 実行例
- C:¥>sqlldr usr01/usr01@db01 control=c:¥syohin.ctl
実行結果
CD | NAME | PRICE | TEKIYO |
---|---|---|---|
1001 | みかん | 30 | 2021/1/1 |
1002 | りんご | 100 | 2021/1/2 |
1003 | バナナ | 200 | 2021/1/3 |
解説
- TSVファイルを読み取るには、ctlファイルに「FIELDS TERMINATED BY '¥t'」の指定をすればOKです。(「¥t」はタブ文字を表す特殊文字です)