在使用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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
