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

