Masataka Miki's Blog

すみません、わかりません。もっと勉強して改善します。

SQL*Loaderのメモ

      2018/11/22

コマンドプロンプト

sqlldr userid=ユーザーID/パスワード control=test.ctl

test.ctrl

OPTIONS ( -- コマンドライン引数でも可。コマンドライン引数が優先。
  LOAD = ALL, -- ロード対象件数。ALLで全件。
  SKIP = 0, -- 先頭からスキップ対象件数。0でスキップなし。
  ERRORS = 0, -- エラーの許容数。-1で全てのエラーを無視。
  ROWS = -1, -- コミットする行数。パラレル・モードのrowsパラメータは無視される。
  DIRECT = TRUE, -- trueでダイレクト・パス・ロード、falseで従来型パス・ロード
  MULTITHREADING = TRUE, -- ダイレクト・パス・ロードの場合、マルチスレッドの使用有無
  PARALLEL = TRUE, -- パラレルロードの実行
  LOG = test.log -- ログファイル
)
LOAD DATA
  CHARACTERSET UTF8 -- Shift_JISはJA16SJIS
  INFILE 'test.csv' -- ロードするファイル
  BADFILE 'test.bad' -- エラーファイル
  APPEND -- or INSERT/REPLACE/TRUNCATE replaceとtruncateはテーブルをすべて消去してロードする
    INTO TABLE table_test
    FIELDS TERMINATED BY "," -- ファイルの区切り文字。TabはX'09'、スペースはWHITESPACE
    TRAILING NULLCOLS -- 未指定項目はnull
  (
    COL_A,
    COL_B "TO_DATE(:column_B, 'YYYY/MM/DD HH24:MI:SS')", -- to_dateしたい場合
    COL_C DATE 'YYYY/MM/DD HH24:MI:SS',
    COL_D CONSTANT "NNN", -- 文字を入れる
    COL_E SYSDATE,
    COL_F NULLIF COL_A=BLANKS -- COL_AがBLANKSの場合に、null
  )

表は作成しておく必要がある。
パスはSQL*Loaderを実行するディレクトリからの相対パス。
Oracle 11gで動作確認してみた。

参考:
SQL*Loaderコマンドライン・リファレンス
SQL Loader 引数 (コマンドライン・オプション)

 - 技術