Oracle sqlloader

j04212發表於2014-02-14


sqlldr userid=scott/tiger direct=y control=d:\book1.ctl


SQL> create table sqlload_test(id number(2),
                               name varchar2(10));

--book1.ctl
load data
infile 'book1.csv'
into table sqlload_test
fields terminated by ','
(id ,
 name
)


--ldtest.ctl

load data
infile *
into table loader_test
replace
fields terminated by ','
(id,
 dt date 'dd/mm/yyyy',
 data "upper(:data)"
)
begindata
1,21/6/1999,hello
2,5/1/2000,oracle
3,15/3/2001,java


--載入固定格式資料 position

load data
infile *
into table dept
repalce
( deptno position(1:2),
  dname  position(3:16),
  loc    position(17:29)
)
begindata
10Accounting    Virginia,usa


可以用*代替數字,表示下一位置。也可以重複使用位置。

load data
infile *
into table dept
repalce
( deptno      position(1:2),
  dname       position(*:16),
  loc         position(*:29),
  entire_line position(1:29)
)
begindata
10Accounting    Virginia,usa


--載入日期欄位
dt date 'dd/mm/yyyy'


--載入帶有函式的欄位

name "upper(:name)"


--載入內嵌換行符的欄位

參考《9i-10g-11g程式設計藝術》 sqlloader章節


--載入LOB資料

參考《9i-10g-11g程式設計藝術》 sqlloader章節

 

--注意
(into)
其中append為資料裝載方式,還有其他選項:  
a、insert,為預設方式,在資料裝載開始時要求表為空  
b、append,在表中追加新記錄  
c、replace,刪除舊記錄,替換成新裝載的記錄  
d、truncate,同上

sqlloader預設使用字元長度char(255),如果字元欄位長度超過255會報錯,加大字元長度即可

fields terminated by ',' optionally enclosed by '"'
藍色部分允許在字元中使用引號,如 ""USA""


--使用引數檔案裝載資料
sqlldr parfile=/u01/load.par

load.par為引數檔案:
userid=ikki/ikki
control='/u01/loadtest.ctl'
data='/u01/loadtest.csv'
log='/u01/loadtest.log'
direct=true
unrecoverable=true  --不需要在重做日誌檔案中記錄新裝載的資料

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27633655/viewspace-1081523/,如需轉載,請註明出處,否則將追究法律責任。

相關文章