DB2數(shù)據(jù)移動初識(EXPORT,IMPORT,LOAD)

數(shù)據(jù)移動手段

DB2的數(shù)據(jù)移動手段,可以分為邏輯結(jié)構(gòu)層面的數(shù)據(jù)移動和物理結(jié)構(gòu)層面的數(shù)據(jù)移動:邏輯結(jié)構(gòu)層面的數(shù)據(jù)移動主要是指數(shù)據(jù)庫對象的變化,和業(yè)務關(guān)聯(lián)性很大;物理結(jié)構(gòu)層面的數(shù)據(jù)移動主要在于數(shù)據(jù)底層存儲位置的變化,比如表空間路徑的變化,或數(shù)據(jù)庫整體被物理地搬到另一臺機器上。

  • 邏輯結(jié)構(gòu)層面的數(shù)據(jù)移動方法
級別 名稱 方式
單表級別 導出(EXPORT) 使用SELECT語句或XQuery語句抽取數(shù)據(jù),并將其放到文件中
單表級別 導入(IMPORT) 使用INSERT語句向表、類型表(使用用戶自定義類型而建立的表)或試圖 填充數(shù)據(jù)
單表級別 LOAD導入 能夠高效地將大量數(shù)據(jù)導入到表中。LOAD導入速度快于IMPORT
單表級別 表移動存儲過程(ADMIN_MOVE_TABLE) DB2 V9.7中新出現(xiàn)的存儲過程。它能夠在不影響系 統(tǒng)可用性的情況下把表從一個空間移動到另一個表空間
多表級別 DB2MOVE 通常用于跨平臺遷移數(shù)據(jù)庫
復制模式存儲過程(ADMIN_COPY_SCHEMA) 將同一個數(shù)據(jù)庫中某模式(SCHEMA)中的隊形和數(shù)據(jù)復制到另外一個模式中
  • 物理層面的數(shù)據(jù)移動方法
名稱 方式
數(shù)據(jù)庫備份與恢復 如果兩個平臺是二進制兼容的,那么可以使用一個平臺的備份,在另外一個平臺恢復,從而實現(xiàn)數(shù)據(jù)庫在平臺間的移動。另外,可以將低版本的數(shù)據(jù)庫備份恢復到高版本實例中,比如可以將DB2 V9.1的數(shù)據(jù)庫備份恢復到DB2 V9.5的實例中,這實現(xiàn)了恢復過程中數(shù)據(jù)庫的升級
重定向恢復 在使用數(shù)據(jù)庫備份恢復的時候,可以改變目標數(shù)據(jù)庫的物理存儲位置
重定位數(shù)據(jù)庫(db2relocatedb) 通過修改數(shù)據(jù)庫控制文件,來重命名數(shù)據(jù)庫或者改變數(shù)據(jù)庫的存儲路徑,從而實現(xiàn)數(shù)據(jù)移動的目標。不過,數(shù)據(jù)庫對象的變化需要手動完成。執(zhí)行這個實用程序時,數(shù)據(jù)庫實例必須處于停止狀態(tài)

數(shù)據(jù)移動手段多種多樣,剛接觸,目前先從EXPORT,IMPORT,LOAD這三種最常用的方法說走。

數(shù)據(jù)準備

  1. 建立一張測試表test,并向其中插入一組數(shù)據(jù)
create table test(
c1 int,
c2 int,
c3 char(10)
);
insert into test values(100,200,'xin  ');
select * from test;
  1. 建立一張測試表mytab1
create table mytab1(
c1 INT,
c2 INT,
c3 char(32),
c4 char(32)
);
select * from mytab1;

效果如圖


  1. 建立一個asc格式的文件,并向其中輸入如圖測試數(shù)據(jù)


導出(EXPORT)

在使用EXPROT命令時,常用的三種類型的數(shù)據(jù):常規(guī)類型數(shù)據(jù)、LOB數(shù)據(jù)和XML數(shù)據(jù)。這次只簡單介紹常規(guī)類型數(shù)據(jù)的使用。

常用的使用格式如下:

EXPORT TO file_name OF file_type
                MODIFIED BY file_type_modifiers
                MESSAGES message_file
                selet_statement

其中

  • file_type 包含的格式有:DEL、IXF、WSF等
  • message_file用于保存export過程中輸出的信息
  • file_type_modifiers是指文件類型修飾符,常見的文件類型修飾符如下:
  • CHARDELx:x表示用來指定的字符串定界符。默認值是雙引號(“”)。
  • COLDELx :x表示的列定界符。默認值是雙引號(,)。
  • CODEPAGE=x:x用來表示將字符串導入文本數(shù)據(jù)時使用的編碼。
  • Timestampformat=”x”:x是源表中時間戳記的格式。(YYYY/MM/DD HH:MM:SS.UUUUUU、YYYY/MM/DD HH、YYYY-MM-DD HH:MM:SS TT、MMM DD YYYY HH:MM:SS:UUUTT、MMM DD YYYY HH:MM:SSTT)
    在EXPORT中使用文件修飾符的方法如下:
    MODIFIED BY chardel! Coldel# codepage=1208 timestampformat=\"yyyy.mm.dd hh:mm\"
示例
  1. 連接到測試數(shù)據(jù)庫
    db2 connect to database

db2 "EXPORT TO /file_path/test.del OF DEL MESSAGES msg.out SELECT * from test"

  1. 使用cat命令查看數(shù)據(jù)
注意
  • select后面是可以加各種條件的,如select c3 from test where c1='100'
  • EXPORT不支持ASC文件格式
  • file_name所在文件夾應該具有寫和讀的權(quán)限
  • file_name不用事先建立,會自動生成
  • file _name的格式 由 of del 選項決定,而不是file_name的后綴名。如,可以寫成:test.txt of del、test.csv of del、test.ixf ofixf等

導入(IMPORT)

IMPORT命令導入常規(guī)類型數(shù)據(jù)的基本格式:

IMPORT FORM file_name OF { IXF | ASC | DEL | WSF}
        MODIFIED BY file_type_modifiers
        [ METHOD {
        L (col-start col-end ) [null indicators (col-position ]  |
        N (col-name ) |
        p (col-position)
        }]
        ALLOW { NO | WRITE } ACCESS
        COMMITCOUNT { n | AUTOMATIC}
        RESTARTCOUNT | SKIPCONT
        ROWCONT n
        MESSAGES message_file
        [ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE]
        INTO target_table_name
字段過濾方式

在導入的時候可以選擇只導入部分字段的數(shù)據(jù),這需要在IMPORT中使用METHOD選項。METHOD選項有三種:METHOD L、METHOD N、METHOD P。下表是三種方式的區(qū)別

名稱 適用的文件格式 帶的參數(shù)
METHOD L ASC文件 起始位置和終止位置
METHOD N IXF文件 字段名稱
METHOD P DEL文件和IXF文件 字段位置(從1開始)

下面將通過三個小例子來對這三種方式加以區(qū)分。

  1. MOTHOD L過濾方式
    只能用于從ASC文件里導入數(shù)據(jù),可以實現(xiàn)導入指定字段的一部分或全部。
    用戶需要指定每個字段在每行對應的起始位置(col-start)和終止位置(col-end),起始位置和終止位置之間用空格分隔。
示例
* 使用METHOD L 進行導入
db2 "IMPORT from /data/xin/loadtest/test.asc of ASC METHOD L(1 5,10 12,20 30) messages msg.out insert into mytab1(c1,c2,c4)"
* 查看效果
  1. METHOD N過濾方式
    通過名稱過濾導入文件中的字段,支持IXF文件類型。
示例
* 執(zhí)行如下命令
 db2 "load from /data/xin/loadtest/test.ixf of ixf method N(C2,C1,C3) insert into mytab1(c1,c2,c4)"
  • 查看效果
1481702957(1).jpg
  1. METHOD P過濾方式
    通過字段位置(從1開始)過濾數(shù)據(jù)文件中要加載的字段。
示例
* 執(zhí)行如下命令
db2 "load from /data/xin/loadtest/test.del of del method P(2,1,3) insert into mytab1(c2,c1,c4)"
  • 查看效果


導入方式選項對比情況

|導入方式| 詳情|
|--------|--------|--------|
| INSERT | 在表中現(xiàn)有數(shù)據(jù)的基礎(chǔ)之上追加新的數(shù)據(jù),如果導入的行與已存在行有主鍵沖突,則本行不導入|
|INSERT_UPDATE |此選項只針對有主鍵的表,在導入數(shù)據(jù)時需要對比主鍵,主鍵重復的話就update(用新數(shù)據(jù)替換原來數(shù)據(jù)),否則就insert(直接插入)|
|REPLACE |把表中原有的數(shù)據(jù)都刪除,并導入新的數(shù)據(jù)。由于進行了清空表操作,有風險,選擇需謹慎。|
| REPLACE_CREATE |目標表存在,則和REPLACE選項一樣。如果目標表沒有定義,則建立目標表及索引,使用這個選項的掐你是導入文件為PC/IXF格式|
| CREATE|建立目標表及索引,并導入數(shù)據(jù),使用這個選項的前提是導入文件為PC/IXF格式|

LOAD導入

LOAD

參考
IBM Knowledge Center
運籌帷幄DB2——從Oracle運維轉(zhuǎn)型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • sqlmap用戶手冊 說明:本文為轉(zhuǎn)載,對原文中一些明顯的拼寫錯誤進行修正,并標注對自己有用的信息。 ======...
    wind_飄閱讀 2,206評論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,560評論 2 22
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 《ilua》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 1...
    葉染柒丶閱讀 11,506評論 0 11
  • 煙雨歇,秦巴明珠鳳凰月。 鳳凰月,磊落青山,史無前例。 千秋小鎮(zhèn)藏金脈,梅花輕嘆弄三疊。 弄三疊,人間天上,英雄豪杰。
    甜小棗閱讀 142評論 1 1

友情鏈接更多精彩內(nèi)容