Oracle SQL*Loader使用方法

SQL*Loaderとは?

外部ファイル(CSV等)のデータをOracleDatabase取り込むOracle標準ツール

実行コマンド

sqlldr
ユーザー名/パスワード@DB
control='制御ファイル名'
log='ログ出力先'
rows=コミット単位
errors=エラー許容数
skip=スキップ件数


sqlldr user/pass@test control='tbl.ctl' log='log.log' rows=1000 errors=-1 skip=3

制御ファイル

OPTIONS (
 ダイレクトモードでロード(バッファ未使用=高速)
 DIRECT=TRUE
)

LOAD DATA

キャラクタセット名(入力ファイルの漢字コード)
CHARACTERSET ~

LENGTH SEMANTICS CHAR

入力ファイルパス
INFILE '~.ctl'

INSERT/APPEND/TRUNCATE/REPLACE
TRUNCATE

ロード対象表
INTO TABLE スキーマ.表

区切り文字(INFILEがCSVの場合)
FIELDS TERMINATED BY ','

INFILEに囲み記号ありの場合
OPTIONALLY ENCLOSED BY '"'

条件に合致するデータのみロードする場合
WHEN (列名1 = 'a' AND 列名2 = 'B')

取り込み対象列
TRAILING NULLCOLS
(
 列名1,
 列名2,
 列名3,
 ~
)


※tbl.ctl
OPTIONS (
 DIRECT=TRUE
)
LOAD DATA
CHARACTERSET JA16SJISTILDE
LENGTH SEMANTICS CHAR
INFILE '入力ファイルパス'
TRUNCATE
INTO TABLE TEST.TABLE1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
WHEN (列名1 = 'a' AND 列名2 = 'B')
TRAILING NULLCOLS
(
 列名1,
 列名2,
 列名3
)