Skip to content

Instantly share code, notes, and snippets.

@ryoben
Last active August 29, 2015 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryoben/10873601 to your computer and use it in GitHub Desktop.
Save ryoben/10873601 to your computer and use it in GitHub Desktop.
sqlloader

SQL*LOADER パラメータファイル

実行方法

sqlloader.batを叩く

フォルダ構成

sqlloader.bat
  par/table.par パラメータファイル。起動時のパラメータ(ユーザーID/パスワード)を設定
  ctl/table.ctl コントロールファイル。肝
  dat/table.dat データファイル。csvなどはここに置く
  bad/table.bad badファイル。何らかのエラーによりinsertできなかったレコードが格納
  dsc/table.dsc dscファイル。when句などでinsertの条件を設定している場合で、その条件に合致しなかったレコードが格納
  log/table.log 実行結果のログが出力
@echo off
sqlldr parfile=par/table.par
pause
--************************************
--* ORACLE SQL*LOADER *
--* 制御ファイル テンプレート *
--* INFILE:table ←TBL名で一括変換 *
--* IN DATA FILE DIR= ./dat/ *
--* OUT BAD FILE DIR = ./bad/ *
--* OUT DSC FILE DIR = ./dsc/ *
--************************************
--****************************
--*オプション設定      *
--****************************
OPTIONS(
--*ダイレクトパス指定
DIRECT = TRUE,
--*エラー許容数
ERRORS = 50,
--*複数CPUかつダイレクトパスロードならTRUE指定
MULTITHREADING = TRUE,
--* デフォルト64KB。最大20MB
READSIZE = 1048576
--**************以下必要に応じて***********
--*最大サイズ
--BINDSIZE = n,
--*ダイレクトバス行数指定
--COLUMNARRAYROWS = n,
--*ロード件数指定
--LOAD = n ,
--*パラレルロード(複数セッションで同一テーブルにロード)
--PARALLEL = TRUE,
--*読み取りバッファサイズ(一回のトランザクションのサイズ)
--*一回にコミットする行数
--ROWS = n ,
--*ログを画面に出さない(サイレントモード)
--SILENT = {HEADER | FEEDBACK | ERRORS | DISCARDS | PARTITIONS | ALL} ,
--*スキップ数。途中実行および、最初のコメント行飛ばす
--SKIP = 3,
--*索引メンテナンス処理停止(ダイレクト・パス・ロード時)
--SKIP_INDEX_MAINTENANCE = TRUE,
--*索引使用禁止状態の索引をスキップ
--SKIP_UNUSABLE_INDEXES = TRUE,
--*ダイレクトパスストリーム時のサイズ指定
--*STREAMSIZE = n
)
LOAD DATA
--*入力Fキャラクターセット(変換必要時)
CHARACTERSET
JA16SJIS
--JA16SJISTILDE
--AL32UTF8
--********************************
--* 入出力ファイル設定 *
--********************************
--*入力データファイル
INFILE './dat/table'
--*不良ファイル出力(デフォだと制御ファイル名.bad)
BADFILE './bad/table'
--*廃棄ファイル名出力(デフォだと制御ファイル名.dsc)
DISCARDFILE './dsc/table'
--*複数ファイルにする場合続けて指定
--INFILE './dat/table2'
--*個別の不良ファイル・廃棄ファイルを指定する場合
--INFILE './dat/table3' BADFILE 'bad/table3' DISCARDFILE 'dsc/table3'
--****************************
--* 処理モード設定 *
--****************************
--*ロード表名 デフォルトINSERT
INTO TABLE tabel
--*追記モード
--APPEND
--*置換モード
--REPLACE
--*全削除モード
--TRUNCATE
--****************************
--* データファイル 設定 *
--****************************
FIELDS
--*カンマ区切り、囲みデリミタ"
--TERMINATED BY ',' ENCLOSED BY '"'
--*カンマ区切り、囲みデリミタなし
--TERMINATED BY ','
--*カンマ+|区切り、囲みデリミタ"
--TERMINATED BY ',|'
(
ID
,NAME
,ADRS
,created_at EXPRESSION "TO_TIMESTAMP('2009/07/20 00:00:00','YYYY/MM/DD HH24:MI:SS')"
,USER CONSTANT 'SQLLOADER'
,updated_at EXPRESSION "TO_TIMESTAMP('2009/07/20 00:00:00','YYYY/MM/DD HH24:MI:SS')"
)
USERID=user/pass
CONTROL=ctl/table
LOG=log/table
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment