Db2 的數據遷移,最常用的就是導入導出功能,而導入導出的命令貌似簡單,實則內含玄機,千變萬化,稍不留神,則錯誤百出,這兒就工作中常用到的命令,總結了壹下,分享給大家!歡迎大家踴躍拍磚!J
當然在這以前,我覺得有必要提及壹點關於導入導出基礎的知識!
DEL:界定的ASCII文件,行分隔符和列分隔符將數據分開。
ASC:定長的ASCII文件,行按照行分割符分開,列定長。
PC/IXF:只能用來在db2之間導數據,根據類型數字值被打包成十進制或者二進制,字符被保存為ASCII,只保存變量已經使用了的長度,文件中包括表的定義和表的數據。
WSF:工作表方式導入導出,這種格式的文件類型用的比較少。
Db2中對不同的數據導入導出方式,支持不同的文件類型,這裏個人覺得很有必要註意的。
文件類型 Import export load
-------------------------------------------------------
定界 支持 支持 支持
非定界 支持 不支持 支持
Ixf 支持 支持 支持
Wsf工作表 支持 支持 不支持
關於3種導入導出操作進行簡單的介紹:
export:導出數據,支持IXF,DEL或WSF
import:導入數據,可以向表中導入數據,支持上面提到的4種文件類型。
load:導入數據,功能和import基本相同。支持以上說的幾種文件類型。
關於Export
這個其實比較簡單,沒啥好說的,壹般命令:export to filename of filetype select x from xx where ;就ok了,這裏需要註意的是:
1. 關於不同字符集的導出
MODIFIED BY CODEPAGE=
Exprot to filename.del for del MODIFIED BY CODEPAGE=1386 select … from …where …;
這裏,在數據從數據庫倒出來的時候就會做壹個數據庫代碼頁的轉換
2.時間字段格式化的
MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt"
例:Exprot to filename.del for del MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" select … from …where …;
關於Import
1.Import模式的介紹
CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE
CREATE :首先創建目標表和它的索引,然後將數據導入到新表中。該選項惟壹支持的文件格式是 PC/IXF。還可以指定新表所在表空間的名稱
INSERT :將導入的數據插入表中。目標表必須已經存在。
INSERT_UPDATE :將數據插入表中,或者更新表中具有匹配主鍵的行。目標表必須已經存在,並且定義了壹個主鍵。
REPLACE :刪除所有已有的數據,並將導入的數據插入到壹個已有的目標表中。
REPLACE_CREATE :如果目標表已經存在,則導入實用程序刪除已有的數據,並插入新的數據,就像 REPLACE 選項那樣。如果目標表還沒有定義,那麽首先創建這個表以及它的相關索引,然後再導入數據。正如您可能想像的那樣,輸入文件必須是 PC/IXF 格式的文件,因為那種格式包含對導出表的結構化描述。如果目標表是被壹個外鍵引用的壹個父表,那麽就不能使用 REPLACE_CREATE。