剛剛接觸ORACLE,簡單的談一下最近對SQLLDR的學習
SQL*Loader 是一個命令行下的工具,它使用存在于客戶端的腳本來操作本地/遠程的數據庫,顧名思義,它的作用就是將數據導入到ORACLE數據庫中,它在使用時需要控制文件和數據文件(可選),最簡單的命令格式為SQLLDR [USER][/PASSWORD] CONTROL = 控制文件名。
1.a)首先先進行一下簡單的測試,在ORACLE中用SCOTT用戶建立表FRUITMARKET(FID NUMBER,FNAME VARCHAR2(10),PRICE VARCHAR2(10),ADDRESS VARCHAR2(5))
b)建立控制文件fruit.ctl
?
?
?
c)在dos環境下執行SQLLDR SCOTT CONTROL=fruit.ctl
d)執行成功,用SQLPLUS登入ORACLE數據庫查看表中數據,導入成功
2.下面對控制文件進行簡單的分析,第一行LOAD DATA 是最常用的用法,還有些參數比較復雜,我也沒接觸過,就不討論了
第二到六行是控制文件的一些語法:
a)第二行表示數據文件的位置,INFILE 文件名。由于fruit.ctl的數據文件包含在此控制文件中,所以文件名的位置用*代替
b)第三行表示要將數據導入到哪張表中,TRUNCATE INTO TABLE FRUITMARKET,第一個參數TRUNCATE的作用下面再說
c)第四行表示字段是以'|'符號來分割的,當然其他符號也可以,只要數據文件中的分隔符和這里指明的一致即可
d)第五行表示表中的字段名,字段的順序可以與表中不一致,但位置必須與數據文件中的字段一一對應,因為此文件較小,所以沒有指明這些字段的類型,而如果是要導入大量數據,則指明類型會縮小SQLLDR命令執行的時間,提高效率、
e)第六行表示數據開始(如果在INFILE 后面指明了數據文件名,則這一語句就沒有意義了)
從第七行還是就是要導入的數據了,也只是在INFILE * 的情況下有效。
3.在指定導入表的時候的參數
在上個例子中參數是TRUNCATE。在這個位置有四個參數:
a)INSERT:向表中插入數據,表必須是空表,否則會報錯(INSERT是默認的參數)
b)APPEND:顧名思義,就是向表中追加數據
c)REPLACE:替換表中數據,先做DELETE,再做INSERT
d)TRUNCATE:先做TRUNCATE,在做INSERT
4.執行SQLLDR命令時的一些附加產物
a)日志文件?
當執行SQLLDR命令時會產生一個與控制文件同名的.log日志文件,里面的內容很多,包括了行的加載狀況(是否失敗,如果失敗會有一些信息),還有命令運行的時間等(第一次看的時候真是驚訝,居然會有這么詳細的日志文件!
)
b)失敗文件
失敗文件的文件名也是與控制文件同名,后綴為.bad,它會記錄有哪些數據執行失敗了,失敗的原因通常是格式不正確,因為失敗文件也是數據文件,那么如果將失敗文件的文件格式改正確以后,同樣可以在INFILE 后面的參數指定為此失敗文件(真的是很方便啊!)
c)廢棄文件
如果在SQLLDR命令的時候顯示的指定廢棄文件,那么如果有一些數據由于某些原因沒有被加載,會將這些數據放在.dsc廢棄文件之中。
?
先總結這些,歡迎新手一起學習,高手如果發現有不對的地方,也敬請拍磚
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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