第7章 數據移動
7.1 數據移動概述
在數據庫的使用過程中,經常需要將一個數據庫中的數據遷移到另外的一個數據庫中。為了實現這種功能,我們可以使用數據庫複製技術,這種技術在大多數的關係型數據庫中都有相應的實現,不過這種方法對管理的要求較高,而且需要網絡的連接。更常用的方法是利用某種類型的外部文件作為中介,將一個數據庫中的某個表中的數據導出到一個外部文件中,然後把該文件中的數據導入到另外一個數據庫中。
DB2中實現以上功能的主要工具有三個:EXPORT、IMPORT和LOAD。其中EXPORT的功能是將表中的數據導出到外部文件中;而IMPORT和LOAD的功能是將外部文件中的數據導入到一個表中。IMPORT和LOAD的功能類似,但在實現手段上有很大差異,我們將在以下章節中詳細闡述。
能夠被DB2所支持用作數據移動的中間文件的格式有四種:非定界ASCII碼文件(ASCII)、定界ASCII碼文件(DEL ASCII)、WSF文件和PC/IXF文件。其特點是:
ASCII:純文本格式,每個數據列之間中有分隔符,但數據行之間沒有分隔符。ASCII文件不能被EXPORT支持。、
DEL:
純文本格式,數據列之間有分隔符,數據行之間也有分隔符。
WSF:Lotus 1-2-3工作表格式。WSF文件不能被LOAD支持。
PC/IXF:一種非常通用的格式,被多種數據庫管理系統所支持。可以用作在異種數據庫中進行數據轉移。
7.2 EXPORT的功能和使用
EXPORT 用於將一個表或多個表中的數據導出到外部文件中。其命令語法為:
>>-EXPORT TO–filename–OF–filetype—————————->
>—–+—————————+—————————–>
| .-,———–. |
| V | |
‘-LOBS TO—–lob-path—+–‘
>—–+—————————+—————————–>
| .-,———–. |
| V | |
‘-LOBFILE—–filename—+–‘
>—–+———————————–+———————>
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>—–+————————————–+——————>
| .-,————–. |
| V | |
‘-METHOD N–(—–column-name—+—)–‘
>—–+————————-+——————————->
‘-MESSAGES–message-file–‘
>—–+-select-statement———————————————+>
‘-HIERARCHY–+-STARTING–sub-table-name–+—+—————+-‘
‘-| traversal-order-list |–‘ ‘-where-clause–‘
命令參數:
LOBFILE Filename:
如果表中有LOB類型數據需要被倒出,指定一個或多個文件用於存儲LOB數據
LOBS TO lob to path:
如果表中有LOB類型數據需要被倒出,指定一個或多個目錄文件用於存儲LOB數據,LOBFILE參數指定的文件將存儲在該路徑下。
MESSAGES message-file:
用於指定在EXPORT過程中生成的警告信息和錯誤信息的存儲文件,如果沒有指定,信息將被輸出到標準輸出(如屏幕)上。
METHOD N column-name:
用於指定在輸出文件中每個數據列的名字,如果沒有指定,表中的相應列的名字將被使用。EXPORT僅支持N方法。
MODIFIED BY filetype-mod:
指定一些額外的參數。
OF filetype :
指定輸出文件的類型。
EXPORT支持定界ASCII碼文件、WSF文件和IXF文件格式作為數據導出的中間文件。
select-statement:
利用SELECT語句指定要輸出的數據。
TO filename:
指定輸出文件的名字。
下面是EXPORT的一個例子:
db2 connect to sample
db2 export to myfile of ixf messages msg
select staff.name, staff.dept, org.location form org, staff,
where org.deptname=staff.dept
在該例中,staff和org中的相應數據將被輸出到myfile文件中,該文件為PC/IXF格式。
注意事項:
在做EXPORT之前,首先要連接到相應的數據庫上。
因為要對錶或視圖(EXPORT支持對視圖進行操作)進行SELECT操作,執行EXPORT的用戶至少要有相關表或視圖上的SELECT權限。
如果使用PC/IXF文件,文件中將包含表中的索引定義。
可以通過DB2 Connect將主機上的數據導出到外部文件中。
7.3 IMPORT的功能和使用
IMPORT可以被看作是EXPORT的逆過程,用於將數據從外部文件中導入到數據庫之中。IMPORT的語法如下:
>>-IMPORT FROM-filename-OF–filetype———————->
>-+—————————–+———————>
| .-,———–. |
| V | |
‘-LOBS FROM—–lob-path—+–‘
>-+———————————–+—————>
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>-+—————————————————————————————–+>
| .-,—————————. |
| V | |
‘-METHOD-+-L–(—–column-start–column-end–+-)-+———————————–+-+-‘
| | .-,—-. | |
| | V | | |
| ‘-NULL INDICATORS–(—–n—+—)–‘ |
| .-,————–. |
| V | |
+-N–(—–column-name—+—)————————————————-+
| .-,——————. |
| V | |
‘-P–(—–column-position—+—)———————————————‘
>-+—————–+—+——————+—————->
‘-COMMITCOUNT–n–‘ ‘-RESTARTCOUNT–n–‘
>-+————————-+——————————->
‘-MESSAGES–message-file–‘
>-+–+-INSERT———+–INTO–+-table-name–+——————————+-+—————-+>
| +-INSERT_UPDATE–+ | | .-,—————-. | | |
| +-REPLACE——–+ | | V | | | |
| ‘-REPLACE_CREATE-‘ | ‘-(—–insert-column—+—)–‘ | |
| ‘-| hierarchy description |——————–‘ |
| |
‘-CREATE–INTO–+-table-name–+——————————+———-+-| tblspace-specs |-‘
| | .-,—————-. | |
| | V | | |
| ‘-(—–insert-column—+—)–‘ |
‘-| hierarchy description |–+-AS ROOT TABLE———-+-‘
‘-UNDER–sub-table-name–‘
>-+——————————————–+———–><
‘-DATALINK SPECIFICATION–| datalink-spec |–‘
命令參數:
filename:
指定要從哪個文件中進行數據導入。
LOBS FROM lob-path:
如果有LOB數據需要導入,指定包含LOB數據的文件所在路徑。
OF filetype :
指定輸出文件的類型。
IMPORT支持上述提到的四種文件格式(ASCII、DEL ASC、WSF、PC/IXF)。
MODIFIED BY filetype-mod
指定一些額外的參數。
COMMITCOUNT n:
每隔n條記錄進行一次提交。避免在出現錯誤以後,需要重新導入所有的數據。比如,設定n為100,則系統每隔100條記錄就進行一次提交,將導入的數據保存下來。如果在導入到531條記錄時出現了錯誤,因為已經保留了500條記錄,只需要從第501條記錄開始導入就可以了。
RESTARTCOUNT n:
一般用於在IMPORT過程中失敗了以後,定義重新進行IMPORT的起點。對上一個例子而言,n應設定為501。
MESSAGES message-file:
用於指定在IMPORT過程中生成的警告信息和錯誤信息的存儲文件,如果沒有指定,信息將被輸出到標準輸出(如屏幕)上。一般來說,在IMPORT完成後,應該檢查該文件中的信息。其中比較重要的信息包括,一共要導入的數據行數目、成功導入行的數目以及被拒絕導入行的數目。
INSERT:
將導入的數據行插入到表中,不對表中原來的數據作更改。INSERT_UPDATE:
將導入的數據行插入到表中,如果導入的數據與表中原來的數據有衝突,則以導入的數據為準,進行更改。
REPLACE:
將原來表中所有的數據刪除之後再進行導入。
CREATE:
如果被導入的表不存在,則先創建表,然後進行導入。只有PC/IXF文件格式支持這種導入模式。
REPLACE_CREATE:
如果被導入的表存在,則將表中的數據刪除後再進行導入。如果被導入的表不存在,則先創建表,然後進行導入。只有PC/IXF文件格式支持這種導入模式。
下面是一個IMPORT的例子:
db2 connect to musicdb
db2 import from artexprt of ixf messages artmsg
create into artists in <tablespace>
index in <indextablespace>
long in <longtablesapce>
在該例中,artexprt文件的數據被導入到表artists中,這個表在IMPORT之前並不存在,系統將根據artexprt文件的格式創建表後,再進行數據導入。
注意事項:
在做IMPORT之前,首先要連接到相應的數據庫上。
因為要對錶或視圖(IMPORT支持對視圖進行操作)進行修改操作,執行EXPORT的用戶至少要有相關表或視圖上的相關權限(依據導入模式的不同而不同)。比如,使用INSERT模式,至少要有相應表上的INSERT權限;如果使用CREATE模式,則需要數據庫上的CREATETAB權限。
如果使用CREATE模式,必須使用PC/IXF文件進行數據導入。
可以通過DB2 Connect向主機上的數據庫導入數據。
7.4 LOAD概述
LOAD的功能與IMPORT類似,但實現的方式有很大區別。其操作方式更加貼近底層。LOAD會把要導入的數據格式化成數據頁,利用並行I/O寫入存儲介質。在LOAD 過程中,只進行極少量的日誌記錄,而且不進行約束檢查。因此,LOAD導入的速度要比IMPORT快很多,尤其是數據量比較的的時候,LOAD的速度優勢十分明顯。
LOAD可以從三種格式的文件進行數據導入,分別是非定界ASCII碼文件、定界ASCII
以下文章點擊率最高
Loading…