db2與oracle的全面對比10

7     數據移動

7.1    數據移動概述


在數據庫的使用過程中,經常需要將一個數據庫中的數據遷移到另外的一個數據庫中。為了實現這種功能,我們可以使用數據庫複製技術,這種技術在大多數的關係型數據庫中都有相應的實現,不過這種方法對管理的要求較高,而且需要網絡的連接。更常用的方法是利用某種類型的外部文件作為中介,將一個數據庫中的某個表中的數據導出到一個外部文件中,然後把該文件中的數據導入到另外一個數據庫中。

DB2中實現以上功能的主要工具有三個:EXPORTIMPORTLOAD。其中EXPORT的功能是將表中的數據導出到外部文件中;而IMPORTLOAD的功能是將外部文件中的數據導入到一個表中。IMPORTLOAD的功能類似,但在實現手段上有很大差異,我們將在以下章節中詳細闡述。


能夠被DB2所支持用作數據移動的中間文件的格式有四種:非定界ASCII碼文件(ASCII)、定界ASCII碼文件(DEL ASCII)WSF文件和PC/IXF文件。其特點是:

ASCII:純文本格式,每個數據列之間中有分隔符,但數據行之間沒有分隔符。ASCII文件不能被EXPORT支持。、

DEL
純文本格式,數據列之間有分隔符,數據行之間也有分隔符。

WSFLotus 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


在該例中,stafforg中的相應數據將被輸出到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支持上述提到的四種文件格式(ASCIIDEL ASCWSFPC/IXF)。

MODIFIED BY filetype-mod


指定一些額外的參數。

COMMITCOUNT n


每隔n條記錄進行一次提交。避免在出現錯誤以後,需要重新導入所有的數據。比如,設定n100,則系統每隔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…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註