SQL*LOADER

Table of Contents

SQL*LOADER

コマンドライン

sqlldr keyward=value

keywardには

  • data データファイル名|拡張子がない場合は.datと判断される
  • LOAD ロードするレコード数

制御ファイル

INFILE

データファイルの指定 ファイル名に拡張子を指定しない場合.datと判断される

  • INFILE %%*%% 制御ファイルにデータをBEGINDATA構文で記述する場合

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) 
)

Validate