正確實現DB2數據移動的步驟有哪些?
以下的文章主要向大家講述的是正確實現DB2數據移動的實際操作方法,如果你對實現DB2數據移動的實際操作方法有興趣的話,你就可以對以下的文章點擊觀看了,以下就是文章的詳細內容介紹,望大家借鑒。
如果要在不同的數據庫管理系統之間進行數據的轉移,DB2數據移動通常是最實用的一種方法,因為任何一種數據庫管理系統都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現不同系統間數據的轉移。
DB2中所謂的數據移動,包括:
1. 數據的導入(Import)
2. 數據的導出(Export)
3. 數據的裝入(Load)
導入和裝入都是利用DB2的相關命令把某種格式的文件中的數據保存到數據庫中的表中
導出是指把DB2數據庫的表中的數據保存到某種格式的文件當中去
數據移動的作用:
如果要在不同的數據庫管理系統之間轉移數據,DB2數據移動通常是最實用的一種方法,因為任何一種數據庫管理系統都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現不同系統間數據的轉移。
這三個命令中,Export最簡單,因為從表中向文件轉移數據,通常不會出現錯誤,也不會有非法的數據。
在講解命令之前,首先介紹一下文件的格式,用于DB2數據移動的文件格式有四種:
1. ASC——非定界ASCII文件,是一個ASCII字符流。數據流中的行由行定界符分隔,而行中的每一列則通過起始和結束位置來定義。例如:
- 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字符流。數據流中的行由行定界符分隔,行中的列值由列定界符分隔。文件類型修飾符可用于修改這些定界符的默認值。例如:
- 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系列的軟件進行數據交換。
4. PC/IXF——是集成交換格式(Integration Exchange Format,IXF)數據交換體系結構的改編版本,由一些列可變長度的記錄構成,包括頭記錄、表記錄、表中每列的列描述符記錄以及表中每行的一條或多條數據記錄。PC/IXF 文件記錄由包含了字符數據的字段組成。
第一部分:數據的導出(Export)
例一:把Org表中的所有數據導出到文件C:ORG.TXT中。
- Export to c:org.txt of del select * from org
其中,of del表示導出到的文件的類型,在本例中導出到一個非定界文本文件中;后面的select * from org是一個SQL語句,該語句查詢出來的結果就是要導出的數據。
例二:改變del格式文件的格式控制符
- export to c:staff.txt of del modified by coldel$ chardel'' decplusblank select * from staff
在該例中,modified子句用于控制各種符號,coldel表示字段之間的間隔符,默認情況為逗號,現在改為$號;chardel表示字符串字段用什么符號引用,默認情況下為一對雙引號括起來,現在改為用一對單引號括起來;decplusblank表示對于十進制數據類型,用空格代替最前面的加號,因為默認情況下會在十進制數據前面加上正負號的。
例三:以ASC格式將數據導出到文件
Export命令是不支持ASC格式文件的,所以如果想導出ASC這樣規整的格式,需要程序員自己進行轉換操作,思路是將各種數據類型都轉換成定長字符串,然后把各個要導出的字段合并成為一個字段。
例如創建如下結構的表n:
- create table n(a int,b date,c time,d varchar(5),e char(4),f double)
然后插入兩條數據:
- 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)
要想把這兩條數據以規整的格式導出到文件中,進行如下操作:
- export to c:est.txt of del select char(a) || char(b) || char(c) || char(d,5) || e || char(f) as tmp from n
這樣導出的結果與ASC格式的文件非常類似,只是每一行的前后多出了一對雙引號,對此我們可以使用文本工具(如寫字板、記事本等)把雙引號刪除掉,也可以置之不理,在以后導入的時候直接控制格式(忽略雙引號)
如果要在不同的數據庫管理系統之間轉移數據,DB2數據移動通常是最實用的一種方法,因為任何一種數據庫管理系統都支持常用的幾種文件格式,通過這個通用的接口,就很容易實現不同系統間數據的轉移。
在文件中的格式為:
- "15 2004-10-2123.12.23abc hh 3.52E1 "
- "5 2004-01-2103.12.23bc hhh 3.5672E1 "
例四:大數據的導出
- export to d:myfile.del of del lobs to d:lob lobfile lobs modified by lobsinfile select * from emp_photo
該命令把emp_photo表的數據導出到d:myfile.del文件中,其結果為:
- "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數據保存在d:lob目錄下的lobs.001、lobs.002、......等一系列文件中。命令中lobs to 后面指定大對象數據保存在什么路徑下(注意,該路徑必須事先已經存在,否則會報錯),lobfile 后面指定大對象數據保存在什么文件中,不要指定擴展名,DB2會根據數據量自動追加.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的數據導出到d:awards.ixf文件中,所有的導出信息都保存在d:msgs.txt文件中(無論是成功、警告還是失敗信息),這樣,管理員可以通過觀察信息文件找到問題所在。---www.bianceng.cn
例六:給導出數據列重命名。
- 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
在默認情況下,導出的每一列數據以表中對應的字段名自動命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。以上的相關內容就是對實現DB2數據移動的方法的介紹,望你能有所收獲。
【編輯推薦】