正確實(shí)現(xiàn)DB2數(shù)據(jù)移動(dòng)的步驟有哪些?
以下的文章主要向大家講述的是正確實(shí)現(xiàn)DB2數(shù)據(jù)移動(dòng)的實(shí)際操作方法,如果你對(duì)實(shí)現(xiàn)DB2數(shù)據(jù)移動(dòng)的實(shí)際操作方法有興趣的話,你就可以對(duì)以下的文章點(diǎn)擊觀看了,以下就是文章的詳細(xì)內(nèi)容介紹,望大家借鑒。
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間進(jìn)行數(shù)據(jù)的轉(zhuǎn)移,DB2數(shù)據(jù)移動(dòng)通常是最實(shí)用的一種方法,因?yàn)槿魏我环N數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個(gè)通用的接口,就很容易實(shí)現(xiàn)不同系統(tǒng)間數(shù)據(jù)的轉(zhuǎn)移。
DB2中所謂的數(shù)據(jù)移動(dòng),包括:
1. 數(shù)據(jù)的導(dǎo)入(Import)
2. 數(shù)據(jù)的導(dǎo)出(Export)
3. 數(shù)據(jù)的裝入(Load)
導(dǎo)入和裝入都是利用DB2的相關(guān)命令把某種格式的文件中的數(shù)據(jù)保存到數(shù)據(jù)庫中的表中
導(dǎo)出是指把DB2數(shù)據(jù)庫的表中的數(shù)據(jù)保存到某種格式的文件當(dāng)中去
數(shù)據(jù)移動(dòng)的作用:
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間轉(zhuǎn)移數(shù)據(jù),DB2數(shù)據(jù)移動(dòng)通常是最實(shí)用的一種方法,因?yàn)槿魏我环N數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個(gè)通用的接口,就很容易實(shí)現(xiàn)不同系統(tǒng)間數(shù)據(jù)的轉(zhuǎn)移。
這三個(gè)命令中,Export最簡(jiǎn)單,因?yàn)閺谋碇邢蛭募D(zhuǎn)移數(shù)據(jù),通常不會(huì)出現(xiàn)錯(cuò)誤,也不會(huì)有非法的數(shù)據(jù)。
在講解命令之前,首先介紹一下文件的格式,用于DB2數(shù)據(jù)移動(dòng)的文件格式有四種:
1. ASC——非定界ASCII文件,是一個(gè)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文件,也是一個(gè)ASCII字符流。數(shù)據(jù)流中的行由行定界符分隔,行中的列值由列定界符分隔。文件類型修飾符可用于修改這些定界符的默認(rèn)值。例如:
- 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系列的軟件進(jìn)行數(shù)據(jù)交換。
4. PC/IXF——是集成交換格式(Integration Exchange Format,IXF)數(shù)據(jù)交換體系結(jié)構(gòu)的改編版本,由一些列可變長(zhǎng)度的記錄構(gòu)成,包括頭記錄、表記錄、表中每列的列描述符記錄以及表中每行的一條或多條數(shù)據(jù)記錄。PC/IXF 文件記錄由包含了字符數(shù)據(jù)的字段組成。
第一部分:數(shù)據(jù)的導(dǎo)出(Export)
例一:把Org表中的所有數(shù)據(jù)導(dǎo)出到文件C:ORG.TXT中。
- Export to c:org.txt of del select * from org
其中,of del表示導(dǎo)出到的文件的類型,在本例中導(dǎo)出到一個(gè)非定界文本文件中;后面的select * from org是一個(gè)SQL語句,該語句查詢出來的結(jié)果就是要導(dǎo)出的數(shù)據(jù)。
例二:改變del格式文件的格式控制符
- export to c:staff.txt of del modified by coldel$ chardel'' decplusblank select * from staff
在該例中,modified子句用于控制各種符號(hào),coldel表示字段之間的間隔符,默認(rèn)情況為逗號(hào),現(xiàn)在改為$號(hào);chardel表示字符串字段用什么符號(hào)引用,默認(rèn)情況下為一對(duì)雙引號(hào)括起來,現(xiàn)在改為用一對(duì)單引號(hào)括起來;decplusblank表示對(duì)于十進(jìn)制數(shù)據(jù)類型,用空格代替最前面的加號(hào),因?yàn)槟J(rèn)情況下會(huì)在十進(jìn)制數(shù)據(jù)前面加上正負(fù)號(hào)的。
例三:以ASC格式將數(shù)據(jù)導(dǎo)出到文件
Export命令是不支持ASC格式文件的,所以如果想導(dǎo)出ASC這樣規(guī)整的格式,需要程序員自己進(jìn)行轉(zhuǎn)換操作,思路是將各種數(shù)據(jù)類型都轉(zhuǎn)換成定長(zhǎng)字符串,然后把各個(gè)要導(dǎo)出的字段合并成為一個(gè)字段。
例如創(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ī)整的格式導(dǎo)出到文件中,進(jìn)行如下操作:
- export to c:est.txt of del select char(a) || char(b) || char(c) || char(d,5) || e || char(f) as tmp from n
這樣導(dǎo)出的結(jié)果與ASC格式的文件非常類似,只是每一行的前后多出了一對(duì)雙引號(hào),對(duì)此我們可以使用文本工具(如寫字板、記事本等)把雙引號(hào)刪除掉,也可以置之不理,在以后導(dǎo)入的時(shí)候直接控制格式(忽略雙引號(hào))
如果要在不同的數(shù)據(jù)庫管理系統(tǒng)之間轉(zhuǎn)移數(shù)據(jù),DB2數(shù)據(jù)移動(dòng)通常是最實(shí)用的一種方法,因?yàn)槿魏我环N數(shù)據(jù)庫管理系統(tǒng)都支持常用的幾種文件格式,通過這個(gè)通用的接口,就很容易實(shí)現(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ù)的導(dǎo)出
- 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ǎo)出到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/"
其中第三個(gè)字段是BLOB類型,在該文件中只保存了一個(gè)標(biāo)志,相當(dāng)于一個(gè)指針,真正的LOB數(shù)據(jù)保存在d:lob目錄下的lobs.001、lobs.002、......等一系列文件中。命令中l(wèi)obs to 后面指定大對(duì)象數(shù)據(jù)保存在什么路徑下(注意,該路徑必須事先已經(jīng)存在,否則會(huì)報(bào)錯(cuò)),lobfile 后面指定大對(duì)象數(shù)據(jù)保存在什么文件中,不要指定擴(kuò)展名,DB2會(huì)根據(jù)數(shù)據(jù)量自動(dòng)追加.001、.002等擴(kuò)展名,同時(shí)不要忘記加上modified by lobsinfile子句。
例五:把導(dǎo)出信息保存在消息文件中。
- export to d:awards.ixf of ixf messages d:msgs.txt select * from staff where dept = 20
這個(gè)例子把staff表中dept=20的數(shù)據(jù)導(dǎo)出到d:awards.ixf文件中,所有的導(dǎo)出信息都保存在d:msgs.txt文件中(無論是成功、警告還是失敗信息),這樣,管理員可以通過觀察信息文件找到問題所在。---www.bianceng.cn
例六:給導(dǎo)出數(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
在默認(rèn)情況下,導(dǎo)出的每一列數(shù)據(jù)以表中對(duì)應(yīng)的字段名自動(dòng)命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個(gè)子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。以上的相關(guān)內(nèi)容就是對(duì)實(shí)現(xiàn)DB2數(shù)據(jù)移動(dòng)的方法的介紹,望你能有所收獲。
【編輯推薦】