Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

一時テーブル作成

一時テーブル作成

リモートで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

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away