DB2數(shù)據(jù)庫所支持的某些外部文件格式的解析
我們今天主要向大家講述的是DB2數(shù)據(jù)庫所支持的某些外部文件格式的正確講解,如果你對DB2數(shù)據(jù)庫所支持的某些外部文件格式的正確講解心存好奇的話,以下的文章將會揭開它的神秘面紗。
在DB2數(shù)據(jù)庫維護中,有項工作可能經(jīng)常需要處理。如在數(shù)據(jù)庫投入生產(chǎn)使用之前,往往需要在數(shù)據(jù)庫中建立大量的信息。這步工作很多都是通過數(shù)據(jù)導入來完成的,即將數(shù)據(jù)直接從某個文件中導入到數(shù)據(jù)庫系統(tǒng)中。
在數(shù)據(jù)導入之前,DB2數(shù)據(jù)庫系統(tǒng)往往會對外部文件的格式進行仔細的檢查。如果外部文件的格式不符合數(shù)據(jù)庫的強制性要求,數(shù)據(jù)庫就會拒絕導入數(shù)據(jù)。筆者這次要給大家介紹的就是DB2數(shù)據(jù)庫(DB2數(shù)據(jù)導入的四大注意事項)支持哪些外部文件格式。希望通過這個分析能夠幫助數(shù)據(jù)庫管理員減輕數(shù)據(jù)導入導出過程中的工作量。
DB2數(shù)據(jù)庫所支持的外部文件格式的講解之定界的ASCII文件。
定界的ASCII文件,在數(shù)據(jù)庫領(lǐng)域內(nèi)應用的是比較廣泛的?;旧先魏我粋€數(shù)據(jù)庫都支持這種格式的外部文件。不過各個數(shù)據(jù)庫對于定界ASCII文件的分隔符的要求是不同的。在DB2數(shù)據(jù)庫中,分隔符好用來標識數(shù)據(jù)元素的起始位置和結(jié)束位置。一般來說,DB2數(shù)據(jù)庫支持如下幾種分隔符。一是字符分隔符。這個字符分隔符主要用來界定字符型數(shù)據(jù)類型的起始位置。
默認情況下,在DB2數(shù)據(jù)庫(提高DB2數(shù)據(jù)備份與恢復的效率)中使用雙引號來作為字符分隔符。這個跟其他數(shù)據(jù)庫有所不同。如在Oracle數(shù)據(jù)庫中,利用定界的ASCII文件導入數(shù)據(jù)的時候,其會自動判斷數(shù)據(jù)是否是字符型的數(shù)據(jù)類型,即不需要使用這個字符分隔符。二是列分隔符,即用來界定字段的起始位置。大部分情況下,都采用逗號(英文狀態(tài))來作為列的分隔符。
不過用戶可以根據(jù)自己的需要來設置不同的列分隔符,如冒號或者分號等等。無論是哪一種符號來做列分隔符,一般情況下都需要滿足一個前提條件,即必須是英文輸入環(huán)節(jié)下的符號。如果是中文狀態(tài)下的逗號或者分號,則會當作普通字符來對帶。三是行分隔符。行分隔符是一個比較特殊的分隔符,因為其所采取的操作系統(tǒng)平臺不同,其采用的行分隔符是不同的。
如在Windows操作系統(tǒng)上,行分隔符就是普通的換行符。而在Linux等操作系統(tǒng)上,雖然也是換行符,但是兩個操作系統(tǒng)上換行符是不同的。如在Linux操作系統(tǒng)上打開Windows操作系統(tǒng)上建立的定界ASCII文件,則格式會混亂。如所有記錄在同一行中顯示,好像沒有分行一樣。
為此在導入數(shù)據(jù)時,如果這個定界文件是在Windwos操作系統(tǒng)上建立的,而DB2數(shù)據(jù)庫則是不屬在Linux操作系統(tǒng)上,就無法正常導入導DB2數(shù)據(jù)庫中。而需要先對格式進行轉(zhuǎn)換,將換行符轉(zhuǎn)換為Linux操作系統(tǒng)所能夠識別的換行符。這一點數(shù)據(jù)庫管理員必須要引起足夠的重視。
根據(jù)上面的規(guī)則,如下記錄就是DB2數(shù)據(jù)庫所能夠支持的格式:
1001,“office”,2323,“BeiJing”,-233
注意,如果在外部文件中,字符串的值中包含列分隔符時(如逗號列分隔符),則這個字符串分隔符是必須的。也就是說,如果要導入的數(shù)據(jù)是字符型數(shù)據(jù)的話,必須要使用雙引號括起來。如果沒有列分隔符好的話,則這個字符串分隔符號可有可無。如Bei,Jing這個字符串,如果不用雙引號括起來的話,DB2數(shù)據(jù)庫系統(tǒng)就會認為他是兩個字段,而不是一個字符串。
此時就需要使用字符分隔符將其引用起來,告訴數(shù)據(jù)庫系統(tǒng)這是一個字符串。雖然這個定界的ASCII文件可以用來轉(zhuǎn)換大多數(shù)的數(shù)據(jù)類型,如字符型數(shù)據(jù)、數(shù)字型數(shù)據(jù)、日期型數(shù)據(jù)等等。但是如果外部文件中包含二進制數(shù)據(jù)的話,則采用這個定界的ASCII文件不是很好的選擇。
另外就是如果文件建立的平臺與DB2數(shù)據(jù)庫所在的平臺所采用的操作系統(tǒng)平臺不同,也不建立采用這個ASCII定界文件。如果遇到這種情況的話,筆者建立采用PC集成交換格式的外部文件。***需要提醒的是,在定界的ASCII文件中,數(shù)據(jù)行的***長度沒有限制。
但是單獨列的值的***長度不能夠超過32KB。則只是從ASCII文件的角度來說的。在將文件導入到數(shù)據(jù)庫的時候,還需要注意DB2數(shù)據(jù)庫表中字段的大小能否容納這個外部文件中字段的值。
【編輯推薦】