正確實現(xiàn)DB2數(shù)據(jù)移動的步驟有哪些?
以下的文章主要向大家講述的是正確實現(xiàn)DB2數(shù)據(jù)移動的實際操作方法,如果你對實現(xiàn)DB2數(shù)據(jù)移動的實際操作方法有興趣的話,你就可以對以下的文章點擊觀看了,以下就是文章的詳細內(nèi)容介紹,望大家借鑒。
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間進行數(shù)據(jù)的轉(zhuǎn)移,DB2數(shù)據(jù)移動通常是最實用的一種方法,因為任何一種數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現(xiàn)不同系統(tǒng)間數(shù)據(jù)的轉(zhuǎn)移。
DB2中所謂的數(shù)據(jù)移動,包括:
1. 數(shù)據(jù)的導入(Import)
2. 數(shù)據(jù)的導出(Export)
3. 數(shù)據(jù)的裝入(Load)
導入和裝入都是利用DB2的相關(guān)命令把某種格式的文件中的數(shù)據(jù)保存到數(shù)據(jù)庫中的表中
導出是指把DB2數(shù)據(jù)庫的表中的數(shù)據(jù)保存到某種格式的文件當中去
數(shù)據(jù)移動的作用:
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間轉(zhuǎn)移數(shù)據(jù),DB2數(shù)據(jù)移動通常是最實用的一種方法,因為任何一種數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現(xiàn)不同系統(tǒng)間數(shù)據(jù)的轉(zhuǎn)移。
這三個命令中,Export最簡單,因為從表中向文件轉(zhuǎn)移數(shù)據(jù),通常不會出現(xiàn)錯誤,也不會有非法的數(shù)據(jù)。
在講解命令之前,首先介紹一下文件的格式,用于DB2數(shù)據(jù)移動的文件格式有四種:
1. ASC——非定界ASCII文件,是一個ASCII字符流。數(shù)據(jù)流中的行由行定界符分隔,而行中的每一列則通過起始和結(jié)束位置來定義。例如:
- 10 Head Office 160 Corporate New York
- 15 New England 50 Eastern Boston
- 20 Mid Atlantic 10 Eastern Washington
- 38 South Atlantic 30 Eastern Atlanta
- 42 Great Lakes 100 Midwest Chicago
- 51 Plains 140 Midwest Dallas
- 66 Pacific 270 Western San Francisco
- 84 Mountain 290 Western Denver
2. DEL——定界ASCII文件,也是一個ASCII字符流。數(shù)據(jù)流中的行由行定界符分隔,行中的列值由列定界符分隔。文件類型修飾符可用于修改這些定界符的默認值。例如:
- 10,"Head Office",160,"Corporate","New York"
- 15,"New England",50,"Eastern","Boston"
- 20,"Mid Atlantic",10,"Eastern","Washington"
- 38,"South Atlantic",30,"Eastern","Atlanta"
- 42,"Great Lakes",100,"Midwest","Chicago"
- 51,"Plains",140,"Midwest","Dallas"
- 66,"Pacific",270,"Western","San Francisco"
- 84,"Mountain",290,"Western","Denver"
3. WSF——(work sheet format)為工作表格式,用于與Lotus系列的軟件進行數(shù)據(jù)交換。
4. PC/IXF——是集成交換格式(Integration Exchange Format,IXF)數(shù)據(jù)交換體系結(jié)構(gòu)的改編版本,由一些列可變長度的記錄構(gòu)成,包括頭記錄、表記錄、表中每列的列描述符記錄以及表中每行的一條或多條數(shù)據(jù)記錄。PC/IXF 文件記錄由包含了字符數(shù)據(jù)的字段組成。
第一部分:數(shù)據(jù)的導出(Export)
例一:把Org表中的所有數(shù)據(jù)導出到文件C:ORG.TXT中。
- Export to c:org.txt of del select * from org
其中,of del表示導出到的文件的類型,在本例中導出到一個非定界文本文件中;后面的select * from org是一個SQL語句,該語句查詢出來的結(jié)果就是要導出的數(shù)據(jù)。
例二:改變del格式文件的格式控制符
- export to c:staff.txt of del modified by coldel$ chardel'' decplusblank select * from staff
在該例中,modified子句用于控制各種符號,coldel表示字段之間的間隔符,默認情況為逗號,現(xiàn)在改為$號;chardel表示字符串字段用什么符號引用,默認情況下為一對雙引號括起來,現(xiàn)在改為用一對單引號括起來;decplusblank表示對于十進制數(shù)據(jù)類型,用空格代替最前面的加號,因為默認情況下會在十進制數(shù)據(jù)前面加上正負號的。
例三:以ASC格式將數(shù)據(jù)導出到文件
Export命令是不支持ASC格式文件的,所以如果想導出ASC這樣規(guī)整的格式,需要程序員自己進行轉(zhuǎn)換操作,思路是將各種數(shù)據(jù)類型都轉(zhuǎn)換成定長字符串,然后把各個要導出的字段合并成為一個字段。
例如創(chuàng)建如下結(jié)構(gòu)的表n:
- create table n(a int,b date,c time,d varchar(5),e char(4),f double)
然后插入兩條數(shù)據(jù):
- insert into n values(15,'2004-10-21','23:12:23','abc','hh',35.2)
- insert into n values(5,'2004-1-21','3:12:23','bc','hhh',35.672)
要想把這兩條數(shù)據(jù)以規(guī)整的格式導出到文件中,進行如下操作:
- export to c:est.txt of del select char(a) || char(b) || char(c) || char(d,5) || e || char(f) as tmp from n
這樣導出的結(jié)果與ASC格式的文件非常類似,只是每一行的前后多出了一對雙引號,對此我們可以使用文本工具(如寫字板、記事本等)把雙引號刪除掉,也可以置之不理,在以后導入的時候直接控制格式(忽略雙引號)
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間轉(zhuǎn)移數(shù)據(jù),DB2數(shù)據(jù)移動通常是最實用的一種方法,因為任何一種數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現(xiàn)不同系統(tǒng)間數(shù)據(jù)的轉(zhuǎn)移。
在文件中的格式為:
- "15 2004-10-2123.12.23abc hh 3.52E1 "
- "5 2004-01-2103.12.23bc hhh 3.5672E1 "
例四:大數(shù)據(jù)的導出
- export to d:myfile.del of del lobs to d:lob lobfile lobs modified by lobsinfile select * from emp_photo
該命令把emp_photo表的數(shù)據(jù)導出到d:myfile.del文件中,其結(jié)果為:
- "000130","bitmap","lobs.001.0.43690/"
- "000130","gif","lobs.001.43690.29540/"
- "000130","xwd","lobs.001.73230.45800/"
- "000140","bitmap","lobs.001.119030.71798/"
- "000140","gif","lobs.001.190828.29143/"
- "000140","xwd","lobs.001.219971.73908/"
- "000150","bitmap","lobs.001.293879.73438/"
- "000150","gif","lobs.001.367317.39795/"
- "000150","xwd","lobs.001.407112.75547/"
- "000190","bitmap","lobs.001.482659.63542/"
- "000190","gif","lobs.001.546201.36088/"
- "000190","xwd","lobs.001.582289.65650/"
其中第三個字段是BLOB類型,在該文件中只保存了一個標志,相當于一個指針,真正的LOB數(shù)據(jù)保存在d:lob目錄下的lobs.001、lobs.002、......等一系列文件中。命令中l(wèi)obs to 后面指定大對象數(shù)據(jù)保存在什么路徑下(注意,該路徑必須事先已經(jīng)存在,否則會報錯),lobfile 后面指定大對象數(shù)據(jù)保存在什么文件中,不要指定擴展名,DB2會根據(jù)數(shù)據(jù)量自動追加.001、.002等擴展名,同時不要忘記加上modified by lobsinfile子句。
例五:把導出信息保存在消息文件中。
- export to d:awards.ixf of ixf messages d:msgs.txt select * from staff where dept = 20
這個例子把staff表中dept=20的數(shù)據(jù)導出到d:awards.ixf文件中,所有的導出信息都保存在d:msgs.txt文件中(無論是成功、警告還是失敗信息),這樣,管理員可以通過觀察信息文件找到問題所在。---www.bianceng.cn
例六:給導出數(shù)據(jù)列重命名。
- export to d:awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) messages d:msgs.txt select * from staff where dept=20
在默認情況下,導出的每一列數(shù)據(jù)以表中對應(yīng)的字段名自動命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。以上的相關(guān)內(nèi)容就是對實現(xiàn)DB2數(shù)據(jù)移動的方法的介紹,望你能有所收獲。
【編輯推薦】