SQL*Loader(sqlldr)でデータをまとめてインポート

データの移行など、たくさんあるデータをまとめてインポートするときに便利なのが、SQLローダー。

■データをテキストTABで用意

お客様データとして、customer.txtとして準備する。

■テーブルを作成

sqlplusなどで、テーブルを作成しておく。

■ロードする仕組みをシェルスクリプトで用意

入れ物(テーブル)と入れるもの(データ)が準備できたので、どうやっていれるか(制御ファイル)を用意する。

制御ファイルcustomer.ctlの中身

LOAD DATA
INFILE 'customer.txt'
TRUNCATE
INTO TABLE customer
FIELDS TERMINATED BY X'09' trailing nullcols
(
ID,
CUSTOMER_NAME ,
ZIP_CODE ,
CUSTOMER_ADDRESS ,
MODIFY_DATE "to_date(:MODIFY_DATE, 'yyyy.mm.dd')" ,
MEMO
)

■実行

データのロード(インポート)を実行する。

$ sqlldr username control=customer.ctl skip=1

usernameは、実際にはOracleユーザ名を渡す。
1行目はタイトル行なので、スキップする。
制御ファイルとしてcustomer.ctlを使って、ロードを実行する。
sqlldrは、パスを通していない場合は、フルパス指定することを忘れずに。