コマンドライン
sqlldr keyward=valuekeywardには
- data データファイル名|拡張子がない場合は.datと判断される
- LOAD ロードするレコード数
制御ファイル
INFILE
データファイルの指定ファイル名に拡張子を指定しない場合.datと判断される
- INFILE %%*%%
INTO TABLE
ロードする表の指定 INSERT、APPEND、REPLACE、TRUNCATEが指定できる- INSERT デフォルトの動作。表を空にする必要がある
- APPEND 表にデータを追加
- REPLACE 表を削除してロード
- TRUNCATE 表を削除してロード。パフォーマンスが高いが参照整合制約を切っておく必要がある。
INTO TABLE tablename APPEND
CONTINUEIF LAST
レコードの終わりを指定できる。1レコードが複数行のCSVファイルをロードする時等便利。
通常、改行毎に1レコードとして扱われるが、
以下の指定をすると、改行が現れても終端がダブルクォートでないうちは、1レコードとして扱ってくれる。
continueif last !='"'
OPTION
実行時のパラメータをコマンドではなく制御ファイルに書けるフィールドの指定
TRAILING NULLCOLS
相対位置に指定したカラムがデータ中に存在しない場合は、NULLがロードされるTERMINATED
データの区切りを指定- TERMINATED BY ',' OPTIONARY ENCLOSED by '"'
FILLER
データファイルのうち、データベースにロードされない項目を指定
data1 column1,
"DUMMY1" FILLER,
"DUMMY2" FILLER
......
CONSTANT
定数を列にロードする
column1 CONSTANT '0'
SYSDATE
列にSYSDATEをロードする
column2 SYSDATE
文字データの文字数制限
CSVファイルをロードするときに、文字データが255バイトを超えるとエラーが発生してロードされない。以下のように255バイトを超える項目にはchar(n)で最大文字列長を指定する。
( hoge1,
hoge2,
hoge3,
hoge4 char(1000)
)