一時テーブル作成
リモートでOracleデータベースへ接続し、データ抽出する際に
検索対象をOracleの一時テーブルに保存する場面が良くあります。
以下は自分が一時テーブルを作成する際によく使うスクリプトです。
1)一時テーブル作成
・exe.bat
・create.sql
2)データ取込
・_sqldr.bat
・ctrl.ctl
・data.aaa
実行する順番は、exe.bat →_sqldr.bat
exe.batについて
# sqlplus {ユーザー}/{パスワード}@{接続文字列} 実行するSQL
# 接続文字列は「tnsnames.ora」に設定された名称である。
sqlplus user/pw@pdb @create.sql
create.sqlについて
内容は一時テーブルを定義する。
以下の例文はテーブルに3項目を定義する
set echo on
spool ./log/CREATE_.log
DROP TABLE 一時テーブル;
CREATE TABLE 一時テーブル (
field1 varchar2(5),
field2 varchar2(4),
field3 varchar2(2)
)
PCTFREE 10
MAXTRANS 255
TABLESPACE TBL01
STORAGE(INITIAL 1M NEXT 1M MINEXTENTS 1 MAXEXTENTS 4096 BUFFER_POOL DEFAULT)
NOCACHE
LOGGING
/
spool off
exit
_sqldr.bat
sqlldr user/pw@pdb data= ".\data.aaa" control="ctrl.ctl" log="log\log_.log" bad="bad\bad_.bad"
ctrl.ctl
# 取込ファイルに対する解析ルール
OPTIONS(BINDSIZE=10000000,SKIP=0,ROWS=1000)
LOAD DATA
APPEND
INTO TABLE 一時テーブル名
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
field1,
field2,
field3
)
data.aaa
aaa1,bbb,ccc
aaa2,bbb,ccc
aaa3,bbb,ccc
以上です。