在使用SQLLoader的時候,可能遇到數據文件多個,或者數據文件格式不規范的情況,下面我們就要討論一下這些的解決辦法
1. 遇到多個數據文件
如果遇到多個數據文件,同時要導入一張表中,就可以使用多個INFILE 語句
1,Apple,$4.00,"A_3"
2,Pear,$3.00,"B_2"
3,Grape,$6.00,"C_5"
4,Banana,$6.00,"D_2"
?fruit6.dat
5,Orange,$2.00,"A_1"
6,stawberry,$3.00,
G_5
?fruit7.dat?
編寫控制文件
LOAD DATA
INFILE fruit6.dat
INFILE fruit7.dat
TRUNCATE INTO TABLE FRUITMARKET
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(FID,FNAME,PRICE,ADDRESS)
?fruit6.ctl
執行SQLLDR語句,查看結果:
導入成功,同時也可以看到ADDRESS列上的雙引號都被去掉了,而且本身就不帶有雙引號的G_5沒有受到任何影響
2.遇到數據文件的前幾行是其他信息的情況
====================================
by Jason
====================================
====================================
1,Apple,$4.00,"A_3"
2,Pear,$3.00,"B_2"
3,Grape,$6.00,"C_5"
4,Banana,$6.00,"D_2"
?fruit8.dat
LOAD DATA
INFILE fruit8.dat
TRUNCATE INTO TABLE FRUITMARKET
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(FID,FNAME,PRICE,ADDRESS)
?fruit8.ctl
其實這種情況控制文件是不變的,變化的地方在SQLLDR命令上
?這種情況需要在SQLLDR命令后指明要跳過的行數(因為我連的數據庫是遠程的,所以上面使用的遠程數據庫的IP地址和服務名)
結果:
還有一種要使用SKIP參數的情況是要導入固定行數的記錄,比如在上面的數據文件只導入三條的話,可以使用LOAD參數:
SQLPLUS SCOTT/tiger CONTROL=fruit8.ctl SKIP=5 LOAD=3
?
3.數據文件某些字段缺失的情況
1,Apple,$7.00,"A_3"
2,Pear,$1.00
3,Grape,$4.00,"C_5"
4,Banana,$6.00,"D_2"
?fruit9.dat
在這種情況下應該在控制文件中使用TRAILING NULLCOLS語句
LOAD DATA
INFILE fruit9.dat
TRUNCATE INTO TABLE FRUITMARKET
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(FID,FNAME,PRICE,ADDRESS)
?fruit9.ctl
這樣,第二行中缺失的ADDRESS會被自動的設為空(NULL)
結果:
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

