Oracle數(shù)據(jù)庫(kù)中使用外部表的心得
外部表如操作系統(tǒng)上的一個(gè)按一定格式分割的文本文件或者其他類型的表。這個(gè)外部表對(duì)于Oracle數(shù)據(jù)庫(kù)來(lái)說(shuō),就好像是一張視圖,在數(shù)據(jù)庫(kù)中可以像試圖一樣進(jìn)行查詢等操作。這個(gè)試圖允許用戶在外部數(shù)據(jù)上運(yùn)行任何的SQL語(yǔ)句,而不需要先將外部表中的數(shù)據(jù)裝載進(jìn)數(shù)據(jù)庫(kù)中。不過(guò)需要注意是,外部數(shù)據(jù)表都是只讀的,不能夠更改。不過(guò)在使用外部表時(shí)仍然有不少的限制。
限制一:需要先建立目錄對(duì)象。
在使用外部數(shù)據(jù)表的時(shí)候,需要先建立目錄對(duì)象。也就是說(shuō),要想Oracle數(shù)據(jù)庫(kù)系統(tǒng)(在Oracle中實(shí)現(xiàn)控制文件多路復(fù)用)訪問(wèn)操作系統(tǒng)文件,就必須在數(shù)據(jù)庫(kù)中建立指向這個(gè)操作系統(tǒng)文件的目錄對(duì)象,然后通過(guò)這個(gè)目錄對(duì)象訪問(wèn)相應(yīng)的操作系統(tǒng)文件,即用目錄對(duì)象存儲(chǔ)操作文件的保存位置。不過(guò)需要注意,這個(gè)目錄對(duì)象普通用戶是無(wú)權(quán)創(chuàng)建的。一般情況下只有特權(quán)用戶或者數(shù)據(jù)庫(kù)管理員角色才可以創(chuàng)建目錄對(duì)象。如果允許其他用戶也可以創(chuàng)建目錄對(duì)象的話,就需要授權(quán)給其他用戶。
其實(shí)這個(gè)目錄對(duì)象就是操作系統(tǒng)中文件或者表格的存儲(chǔ)位置。不過(guò)在建立對(duì)象的時(shí)候,需要小心,Oracle數(shù)據(jù)庫(kù)系統(tǒng)不會(huì)去確認(rèn)這個(gè)目錄是否真的存在。如果在輸入這個(gè)目錄對(duì)象的時(shí)候,不小心把路徑寫錯(cuò)了,那可能這個(gè)外部表仍然可以正常建立,但是卻無(wú)法查詢到數(shù)據(jù)。由于建立目錄對(duì)象時(shí),缺乏這種自我檢查的機(jī)制,為此在將路徑賦予給這個(gè)目錄對(duì)象時(shí),需要特別的注意。另外需要注意的是路徑的大小寫。在Windows操作系統(tǒng)中,其路徑是不區(qū)分大小寫的。而在Linux操作系統(tǒng),這個(gè)路徑需要區(qū)分大小寫。故在不同的操作系統(tǒng)中,建立目錄對(duì)象時(shí)需要注意這個(gè)大小寫的差異。最好數(shù)據(jù)庫(kù)管理員可以養(yǎng)成一個(gè)習(xí)慣,無(wú)論在什么操作系統(tǒng)中,都采用小寫的目錄名與文件名。那么在不同的操作系統(tǒng)中,就不用受到這個(gè)大小寫的困擾了。最后需要注意的是,目錄對(duì)象名必須唯一。如果目錄對(duì)象名字有重復(fù)的話,系統(tǒng)會(huì)提示錯(cuò)誤信息:“名稱已有現(xiàn)有對(duì)象引用”,而不會(huì)自動(dòng)覆蓋原有的對(duì)象名設(shè)置。
雖然這個(gè)對(duì)象名設(shè)置比較簡(jiǎn)單,但是其是數(shù)據(jù)庫(kù)尋找操作系統(tǒng)上文件的唯一途徑。所以這個(gè)目錄對(duì)象的創(chuàng)建必須確保準(zhǔn)確。否則的話,外部表就可能無(wú)法正常使用。
關(guān)于Oracle數(shù)據(jù)庫(kù)的外部表的知識(shí)就為大家總結(jié)到這里,上文中是平時(shí)的工作中總結(jié)出的經(jīng)驗(yàn),如有什么不妥的地方,歡迎大家指正,主要是能夠幫助到大家我就很高興啦。
【編輯推薦】