SQL*Loader
制御ファイル構文
--例:データ追加。キーが重複しなかったものだけ追加される。 LOAD DATA INFILE 'data/data.csv' BADFILE 'data.bad' APPEND INTO TABLE HOGE FIELDS TERMINATED BY "," TRAILING NULLCOLS ( HOGE, MOGE )
コメント文
--This is a comment.
ハイフン2個(--)行末までコメント化。ただしデータ部には指定できない。
OPTIONS句
LOAD DATA文の前に指定する。
LOAD DATA
データロード開始指示。
CHARACTERSET
読み込みファイルの文字コードがDBの文字コードと異なる場合にファイルの文字コードを指定。(JA16SJIS, JA16EUC, UTF8等)
INFILE
入力データファイルを指定する。
BADFILE
拒否データが書き込まれるファイル名を指定。
DISCARDFILE
廃棄ファイルが書き込まれるファイル名を指定。
FIELD
- TERMINATED BY : データ区切り文字。カンマ区切りの場合は「","」。タブ区切りの場合は「X'09'」。固定長の場合は不要。
- OPTIONALLY ENCLOSED BY : データ囲み文字。囲まない場合は不要。ダブルクォートの場合、「'"'」。
各項目の後ろには、関数を記述することも可能。関数の引数に書く項目名には「:」を付けること。
HOGEDATE "TO_DATE(:HOGEDATE, 'YYYY/MM/DD')"
属性指定をすることも可能。
HOGENUM DECIMAL EXTERNAL
指定可能属性は以下。
属性 | DB属性 | 説明 |
CHAR | CHAR,VARCHAR2 | 文字列 |
DECIMAL EXTERNAL | NUMBER | 数値 |
ZONED | NUMBER | 数値(小数扱い) |
DATE | DATE | 日付。指定時は書式を付ける |
CONSTANT | 何でも | 定数 |
TRAILING NULLCOLS
データのない項目にNULLを入れる。
固定長データの読み込み
FIELD指定時に以下のようにする。
HOGE POSITION(1:10) CHAR
POSITIONで読み込み範囲を指定する。この場合1バイトから10バイト分。0FIXでは無い(1FIX)ので注意。
SQLLDRのオプション引数で指定する
$>SQLLDR user/pass@sid control=control.ctl data=inputfile log=logfile bad=badfile
control
コントロールファイルを指定する。
data
INFILE要素と同じ。
log
実行ログを記録するファイルを指定する。
bad
BADFILE要素と同じ。