SQL> create table test(
2 num_col number(10),
3 char_col char(10),
4 var_col varchar2(10),
5 date_col date,
6 blob_col blob,
7 clob_col clob,
8 raw_col raw(20)
9 );
Table Created.
在這個(gè)例子中有CLOB/BLOB列, 因此直接模式不能用, 還需要將ROWS參數(shù)設(shè)為1, 下面是SQLLDR用的控制文件:
--
-- Generated by AUL/MyDUL, for table hr.test
--
OPTIONS(DIRECT=TRUE,READSIZE=4194304,ERRORS=-1,SKIP=1,ROWS=50000)
LOAD DATA
INFILE 'hr_test.txt' "STR X'0d0a'"
INTO TABLE TEST
FIELDS TERMINATED BY X'7c' TRAILING NULLCOLS
(
NUM_COL CHAR ,
CHAR_COL CHAR(10) ,
VAR_COL CHAR(10) ,
DATE_COL DATE "YYYY-MM-DD HH24:MI:SS" ,
LOBF_00005 FILLER CHAR(32),
BLOB_COL LOBFILE(LOBF_00005) TERMINATED BY EOF ,
LOBF_00006 FILLER CHAR(32),
CLOB_COL LOBFILE(LOBF_00006) TERMINATED BY EOF ,
RAW_COL CHAR
)
當(dāng)然我給的參數(shù)肯定不是最好的, 請(qǐng)你試了后告訴我.
當(dāng)使用sqlldr加載很長(zhǎng)的字符串(超過(guò)4000)到表中的clob類(lèi)型中時(shí),老是報(bào)錯(cuò): 數(shù)據(jù)文件的字段超出最大長(zhǎng)度.查找相關(guān)資料后得知,sqlldr每次讀入文件中數(shù)據(jù)流的數(shù)據(jù)類(lèi)型默認(rèn)為CHAR ,長(zhǎng)度為 255 .所以只要超過(guò)255字符的段都會(huì)報(bào)這個(gè)錯(cuò).解決方法很簡(jiǎn)單,在控制文件中字段后添加上char(1000000),例如:
LOAD DATA
INFILE *
INTO TABLE DEMO
TRUNCATE
FIELDS TERMINATED BY ','
(d1 ,
d2 char(1000000)
)
其中表demo的列d2是clob類(lèi)型,當(dāng)然1000000只是隨便用的一個(gè)大數(shù)字,只要保證加載的長(zhǎng)度不超這個(gè)數(shù)字就成.
------------------------------------------------------------
首先建立表:
SQL> desc lobdemo
名稱(chēng)????????????????????????????????????? 是否為空? 類(lèi)型
----------------------------------------- -------- ------------
AA01????????????????????????????????????? NOT NULL VARCHAR2(10)
AA02????????????????????????????????????? NOT NULL BLOB
以下是ctl控制文件得寫(xiě)法:文件名為ctldemo.ctl
load data
infile 'dump002.dat'
insert
into table "BTGL"."LOBDEMO1"
FIELDS TERMINATED BY '|' TRAILING NULLCOLS??
("AA01"???????????????????????????? CHAR(3) enclosed by '|',
LOBFILE_COL1?????????????????????? FILLER CHAR???????????????????? ,
"AA02"???????????????????????????? LOBFILE(LOBFILE_COL1) TERMINATED BY EOF NULLIF LOBFILE_COL1 = 'NONE')
然后在DOS下執(zhí)行:
sqlldr username/password control=ctldemo.ctl
當(dāng)時(shí)要導(dǎo)入得是100多萬(wàn)條,所以我采用了direct方式
c:\>sqlldr username/password control=ctldemo.ctl direct=y
sqlldr也支持多字符分隔符文件導(dǎo)入。只要類(lèi)似fields terminated by "|||"這樣就可以了! 其中|||就是分割符
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
