在平常工做中,常常有數據的導入/導出需求,例如將某些表的數據保存成文件形式,或者將文件數據加載到數據庫等。爲此,DB2提供了不少工具供你們選擇,如export、import、load、db2dart、db2move。圖1直觀地展現了這幾種工具的使用,最上面虛線部分是工具所支持的導入/導出文件格式,中間html
圖1sql
因爲export與import在其它數據庫中也有較多的應用,本文再也不對其作詳細說明。在DB2中,load工具的使用較爲頻繁,此前已有其它同事作了介紹,這裏也再也不深刻討論。db2dart工具會在後續分享中進行介紹。數據庫
本文主要對db2move工具以及與之相配合的db2look工具作簡要介紹。服務器
在數據遷移前,咱們須要在目標端對數據對象作定義。db2look能夠用來產生表、視圖、索引、函數、觸發器、存儲過程等對象的定義語句。對於其詳細用法,能夠經過db2look -h進行查看幫助。網絡
db2inst1@suse11:~> db2look -happ
db2look: Generates DDLs to recreate the objects defined in a databaseide
Syntax: db2look -d DBname [-e] [-xs] [-xdir Path] [-u Creator] [-z Schema]函數
[-t Tname1 Tname2...TnameN] [-tw Tname] [-xdep] [-xddep]工具
[-n Nname1 Nname2...NnameN] [-nw Nname]佈局
[-o Fname] [-a] [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-h]
[-fd] [-td x] [-noview] [-i userID] [-w password]
[-v Vname1 Vname2 ... VnameN] [-dp] [-ct]
[-wrapper WrapperName] [-server ServerName] [-nofed]
[-wlm] [-ap] [-mod] [-cor] [-wrap] [-noimplschema] [-nostatsclause]
[-wrapper WrapperName] [-server ServerName][-fedonly] [-nofed]
db2look [-h]
對於參數的說明:
-d: 數據庫名:這必須指定 -e: 抽取複製數據庫所須要的 DDL 文件 此選項將生成包含 DDL 語句的腳本 能夠對另外一個數據庫運行此腳本以便從新建立數據庫對象 此選項能夠和 -m 選項一塊兒使用 -u: 建立程序標識:若 -u 和 -a 都未指定,則將使用 $USER 若指定了 -a 選項,則將忽略 -u 選項 -z: 模式名:若是同時指定了 -z 和 -a,則將忽略 -z 聯合部分的模式名被忽略 -t: 生成指定表的統計信息 能夠指定的表的數目最多爲 30 -h: 更詳細的幫助消息 -o: 將輸出重定向到給定的文件名 若未指定 -o 選項,則輸出將轉到 stdout -a: 爲全部建立程序生成統計信息 若指定了此選項,則將忽略 -u 選項 -m: 在模擬方式下運行 db2look 實用程序 此選項將生成包含 SQL UPDATE 語句的腳本 這些 SQL UPDATE 語句捕獲全部統計信息 能夠對另外一個數據庫運行此腳本以便複製初始的那一個 當指定了 -m 選項時,將忽略 -p、-g 和 -s 選項 -c: 不要生成模擬的 COMMIT 語句 除非指定了 -m 或 -e,不然將忽略此選項 將不生成 CONNECT 和 CONNECT RESET 語句 -r: 不要生成模擬的 RUNSTATS 語句 缺省值爲 RUNSTATS。僅當指定了 -m 時,此選項纔有效 -l: 生成數據庫佈局:數據庫分區組、緩衝池和表空間。 -x: 若是指定了此選項,則 db2look 實用程序將生成受權 DDL 對於現有已受權特權,不包括對象的原始定義器 -xd: 若是指定了此選項,則 db2look 實用程序將生成受權 DDL 對於現有已受權特權,包括對象的原始定義器 -f: 抽取配置參數和環境變量 若是指定此選項,將忽略 -wrapper 和 -server 選項 -td: 將 x 指定爲語句定界符(缺省定界符爲分號(;)) 應該與 -e 選項一塊兒使用(若是觸發器或者 SQL 例程存在的話) -p: 使用簡單文本格式 -s: 生成 postscript. 文件 此選項將爲您生成 postscript. 文件 當設置了此選項時,將除去全部 latex 和 tmp ps 文件 所需的(非 IBM)軟件:LaTeX 和 dvips 注意:文件 psfig.tex 必須在 LaTeX 輸入路徑中 -g: 使用圖形來顯示索引的頁取裝對 必須安裝 Gnuplot,而且 必須在您的 LaTeX 輸入路徑中 還將隨 LaTeX 文件一塊兒生成 文件 -i: 登陸到數據庫駐留的服務器時所使用的用戶標識 -w: 登陸到數據庫駐留的服務器時所使用的密碼 -noview: 不要生成 CREATE VIEW ddl 語句 -wrapper: 爲適用於此包裝器的聯合對象生成 DDL 生成的對象可能包含下列各項: 包裝器、服務器、用戶映射、別名、類型映射、 函數模板、函數映射和索引規範 -server: 爲適用於此服務器的聯合對象生成 DDL 生成的對象可能包含下列各項: 包裝器、服務器、用戶映射、別名、類型映射、 函數模板、函數映射和索引規範 -nofed: 不要生成 Federated DDL 若是指定此選項,將忽略 -wrapper 和 -server 選項 |
在DB2 V10.5.0.5版本中,db2look又添加了幾個很是實用的選項:
-ct: 按照對象建立時間生成DDL語句 -noimplschema: 不要爲隱式建立的模式生成CREATE SCHEMA ddl -nostatsclause: 不要在CREATE INDEX DDL中包含統計子句 -createdb: 生成用於建立源數據庫的CREATE DATABASE命令 -printdbcfg: 爲數據庫配置參數生成UPDATE DB CFG命令 |
1)導出數據庫的建庫指令:
db2look -d sample -createdb -o createdb.sql
2)導出數據庫配置參數的更改指令:
db2look -d sample -printdbcfg -o dbcfg.sql
3)導出數據庫全部對象的建立指令:
db2look -d sample -e -l -o sample.ddl
4)導出單張表的表結構:
db2look -d db_name -e -t schema_name.tab_name -nofed -o tab_name.ddl
5)導出數據庫受權指令:
db2look -d sample -x -o grant.sql
1) 導出數據庫的建庫指令:
DB2自帶了sample數據庫,能夠經過db2sampl指令來建立。db2sampl指令是由許多的指令封裝而成的,這裏咱們經過db2look工具來導出sample數據庫的建庫指令。
db2inst1@suse11:~> db2look -d sample -createdb -o createdb.sql
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Output is sent to file: createdb.sql
db2inst1@suse11:~> cat createdb.sql
-- This CLP file was created using DB2LOOK Version "10.5"
-- Timestamp: 2018年01月13日 星期六 21時05分56秒
-- Database Name: SAMPLE
-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6
-- Database Codepage: 1208
-- Database Collating Sequence is: IDENTITY
-- Alternate collating sequence(alt_collate): null
-- varchar2 compatibility(varchar2_compat): OFF
--------------------------------------------------------
-- Generate CREATE DATABASE command
--------------------------------------------------------
CREATE DATABASE SAMPLE
AUTOMATIC STORAGE YES
ON '/home/db2inst1'
DBPATH ON '/home/db2inst1/'
USING CODESET UTF-8 TERRITORY CN
COLLATE USING IDENTITY
PAGESIZE 8192
DFT_EXTENT_SZ 32
CATALOG TABLESPACE MANAGED BY AUTOMATIC STORAGE
EXTENTSIZE 4
OVERHEAD 7.500000
TRANSFERRATE 0.060000
NO FILE SYSTEM CACHING
AUTORESIZE YES
INITIALSIZE 32 M
MAXSIZE NONE
TEMPORARY TABLESPACE MANAGED BY AUTOMATIC STORAGE
EXTENTSIZE 32
OVERHEAD 7.500000
TRANSFERRATE 0.060000
FILE SYSTEM CACHING
USER TABLESPACE MANAGED BY AUTOMATIC STORAGE
EXTENTSIZE 32
OVERHEAD 7.500000
TRANSFERRATE 0.060000
NO FILE SYSTEM CACHING
AUTORESIZE YES
INITIALSIZE 32 M
MAXSIZE NONE ;
CONNECT TO SAMPLE;
COMMIT WORK;
CONNECT RESET;
TERMINATE;
2) 導出sample數據庫配置參數的更改指令:
db2inst1@suse11:~> db2look -d sample -printdbcfg -o dbcfg.sql
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Output is sent to file: dbcfg.sql
db2inst1@suse11:~> cat dbcfg.sql
-- This CLP file was created using DB2LOOK Version "10.5"
-- Timestamp: 2018年01月13日 星期六21時49分06秒
-- Database Name: SAMPLE
-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6
-- Database Codepage: 1208
-- Database Collating Sequence is: IDENTITY
-- Alternate collating sequence(alt_collate): null
-- varchar2 compatibility(varchar2_compat): OFF
CONNECT TO SAMPLE;
--------------------------------------------------------
-- Generate UPDATE DB CFG commands
--------------------------------------------------------
-- The db2look command generates the UPDATE DB CFG statements
-- to replicate the database configuration parameters based on
-- the current values in the source database.
-- For the configuration parameters which support AUTOMATIC,
-- you need to add AUTOMATIC to the end
-- if you want the DB2 database to automatically adjust them.
--UPDATE DB CFG FOR SAMPLE USING ALT_COLLATE ;
UPDATE DB CFG FOR SAMPLE USING STMT_CONC OFF ;
UPDATE DB CFG FOR SAMPLE USING DISCOVER_DB ENABLE ;
(此處省略若干行)
UPDATE DB CFG FOR SAMPLE USING LOGARCHMETH1 DISK:/home/db2inst1/arch/ ;
UPDATE DB CFG FOR SAMPLE USING LOG_DDL_STMTS NO ;
UPDATE DB CFG FOR SAMPLE USING LOG_APPL_INFO NO ;
UPDATE DB CFG FOR SAMPLE USING DFT_SCHEMAS_DCC NO ;
(此處省略若干行)
COMMIT WORK;
CONNECT RESET;
TERMINATE;
3) 導出sample數據庫全部對象的建立指令:
db2inst1@suse11:~> db2look -d sample -e -l -o sample.ddl
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Creating DDL for table(s)
-- Output is sent to file: sample.ddl
db2inst1@suse11:~> cat sample.ddl
-- This CLP file was created using DB2LOOK Version "10.5"
-- Timestamp: 2018年01月13日 星期六 21時58分47秒
-- Database Name: SAMPLE
-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6
-- Database Codepage: 1208
-- Database Collating Sequence is: IDENTITY
-- Alternate collating sequence(alt_collate): null
-- varchar2 compatibility(varchar2_compat): OFF
CONNECT TO SAMPLE;
(因爲建立指令過長,此處省略)
COMMIT WORK;
CONNECT RESET;
TERMINATE;
4)以sample庫的表sales爲例,導出單張表的建立指令:
db2inst1@suse11:~> db2look -d sample -e -t db2inst1.sales -nofed -o sales.ddl
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- The db2look utility will consider only the specified tables
-- Creating DDL for table(s)
-- Output is sent to file: sales.ddl
db2inst1@suse11:~> cat sales.ddl
-- This CLP file was created using DB2LOOK Version "10.5"
-- Timestamp: 2018年01月13日 星期六 21時41分17秒
-- Database Name: SAMPLE
-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6
-- Database Codepage: 1208
-- Database Collating Sequence is: IDENTITY
-- Alternate collating sequence(alt_collate): null
-- varchar2 compatibility(varchar2_compat): OFF
CONNECT TO SAMPLE;
------------------------------------------------
-- DDL Statements for Table "DB2INST1"."SALES"
------------------------------------------------
CREATE TABLE "DB2INST1"."SALES" (
"SALES_DATE" DATE ,
"SALES_PERSON" VARCHAR(15 OCTETS) ,
"REGION" VARCHAR(15 OCTETS) ,
"SALES" INTEGER )
IN "USERSPACE1"
ORGANIZE BY ROW;
COMMIT WORK;
CONNECT RESET;
TERMINATE;
db2move工具用來在兩個數據庫之間進行數據遷移,特別適合於不一樣平臺、表數量比較多的狀況。此工具是對export、import、load命令的封裝,根據系統表得到用戶表,將數據庫導出爲PC/IXF格式,同時會產生一個db2move.1st文件,記錄導出表和數據文件名字,將這些文件傳輸到目標系統中,經過load或import進行導入。
.----------------------------.
V |
>>-db2move--dbname--action----+------------------------+-+-----><
+- -tc--table_definers---+
+- -tn--table_names------+
+- -sn--schema_names-----+
+- -ts--tablespace_names-+
+- -tf--filename---------+
+- -io--import_option----+
+- -lo--load_option------+
+- -co--copy_option------+
+- -l--lobpaths----------+
+- -u--userid------------+
+- -p--password----------+
'- -aw-------------------'
2. 如下是用中文介紹db2move的用法:(本段中文說明引自網絡)
db2move 命令 db2move <database-name> <action> [<option> <value>] 首先,必須指定數據庫名(想要移動的表所在的數據庫)和要執行的操做(export 和 import 或 load)。而後指定一個選項來定義操做的範圍。例如,能夠將一個操做限制在特定的表(-tn)、表空間(-ts)、表建立者(-tc)或模式名(-sn)範圍內。指定表、表空間或表的建立者的一個子集只對 export 操做有效。若是指定多個值,就必須使用逗號將其分隔開;在值列表項之間不容許有空格。能夠指定的項最多爲 10 個。 另外,也能夠指定 -tf 選項,此時要使用一個文件名做爲參數,其中列出了要導出的表名;在該文件中,每行只能列出一個完整的表名。您還能夠指定如下內容: -tn -表名,導出單一表 -tf - 文件名,文件中每行記錄一個完整的表名 -ts -表空間名稱,用於導出某個表空間下的全部數據 -tc -表建立者,導出某用戶建立的全部數據 -sn -模式名,用於導出某個模式下的全部數據
-io import-option 指定 DB2 的 import 工具能夠運行的一種模式。有效的選項有: CREATE、 INSERT、 INSERT_UPDATE、 REPLACE 和 REPLACE_CREATE。缺省值爲 REPLACE_CREATE。有關這些模式的更多內容,請參閱 DB2 的產品文檔,能夠從 DB2 技術支持得到這些文檔。 -lo load-option 指定 DB2 的 load 工具能夠運行的一種模式。有效的選項有:INSERT 和 REPLACE。缺省值爲 INSERT。 有關這些模式的更多內容,請參閱 DB2 的產品文檔,能夠從 DB2 技術支持得到這些文檔。 -l lobpaths 指定要建立或查找的 LOB 文件的位置。必須指定一個或多個絕對路徑名。若是指定了多個絕對路徑,就必須使用逗號將其分隔開;值之間不容許有空格。缺省值是當前目錄。 -u userid 指定一個用戶 ID,該工具可使用這個用戶 ID 登陸到遠程系統上。 -p password 指定對該用戶進行認證的密碼;該工具須要使用一個有效的用戶 ID 和密碼登陸到遠程系統上。 (注:本段中文說明引自網絡) https://www.cnblogs.com/xiaojianblogs/p/6224356.html?utm_source=itdadao&utm_medium=referral
|
1) 試驗目的:利用db2look+db2move工具,將192.168.29.142主機db2inst1實例的sample數據庫遷移至192.168.29.135主機db2inst1實例上。
2) 建立SAMPLE數據庫,並建立帶有identity標識列的表cust1。
db2inst1@suse11:~> db2sampl
Creating database "SAMPLE"...
Connecting to database "SAMPLE"...
Creating tables and data in schema "DB2INST1"...
Creating tables with XML columns and XML data in schema "DB2INST1"...
'db2sampl' processing complete.
db2inst1@suse11:~> db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 10.5.6
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2inst1@suse11:~> db2 "create table cust1(custno smallint not null generated always as identity (start with 100,increment by 1),custname varchar(16)) in USERSPACE1"
DB20000I The SQL command completed successfully.
db2inst1@suse11:~> db2 "select * from cust1 with ur"
CUSTNO CUSTNAME
------ ----------------
0 record(s) selected.
db2inst1@suse11:~> db2 "insert into cust1(custname) values('ma')"
DB20000I The SQL command completed successfully.
db2inst1@suse11:~> db2 "insert into cust1(custname) values('miao')"
DB20000I The SQL command completed successfully.
db2inst1@suse11:~> db2 "insert into cust1(custname) values('miaomiao')"
DB20000I The SQL command completed successfully.
db2inst1@suse11:~> db2 "select * from cust1 with ur"
CUSTNO CUSTNAME
------ ----------------
100 ma
101 miao
102 miaomiao
3 record(s) selected.
3) 使用db2look工具,導出192.168.29.142主機SAMPLE數據庫的建庫指令以及全部對象的定義。
db2inst1@suse11:~/ddl> db2look -d sample -createdb -o createdb.sql
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Output is sent to file: createdb.sql
-- Binding package automatically ...
-- Bind is successful
-- Binding package automatically ...
-- Bind is successful
db2inst1@suse11:~/ddl> db2look -d sample -e -l -o sample.ddl
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Creating DDL for table(s)
-- Output is sent to file: sample.ddl
4) 將sample庫的數據經過db2move導出,新建目錄db2move,用於存放導出的數據
db2inst1@suse11:~> mkdir db2move
db2inst1@suse11:~> cd db2move
db2inst1@suse11:~/db2move> db2move sample export
Application code page not determined, using ANSI codepage 1208
***** DB2MOVE *****
Action: EXPORT
Start time: Sat Jan 13 23:20:36 2018
Connecting to database SAMPLE ... successful! Server : DB2 Common Server V10.5.6
EXPORT: 18 rows from table "DB2INST1"."ACT"
EXPORT: 0 rows from table "DB2INST1"."CATALOG"
EXPORT: 5 rows from table "DB2INST1"."CL_SCHED"
EXPORT: 6 rows from table "DB2INST1"."CUSTOMER"
EXPORT: 14 rows from table "DB2INST1"."DEPARTMENT"
EXPORT: 42 rows from table "DB2INST1"."EMPLOYEE"
EXPORT: 10000 rows from table "DB2INST1"."EMPMDC"
EXPORT: 73 rows from table "DB2INST1"."EMPPROJACT"
EXPORT: 8 rows from table "DB2INST1"."EMP_PHOTO"
EXPORT: 8 rows from table "DB2INST1"."EMP_RESUME"
EXPORT: 156 rows from table "SYSTOOLS"."HMON_ATM_INFO"
EXPORT: 0 rows from table "SYSTOOLS"."HMON_COLLECTION"
EXPORT: 4 rows from table "DB2INST1"."INVENTORY"
EXPORT: 3 rows from table "DB2INST1"."IN_TRAY"
EXPORT: 8 rows from table "DB2INST1"."ORG"
EXPORT: 5 rows from table "SYSTOOLS"."POLICY"
EXPORT: 4 rows from table "DB2INST1"."PRODUCT"
EXPORT: 2 rows from table "DB2INST1"."PRODUCTSUPPLIER"
EXPORT: 65 rows from table "DB2INST1"."PROJACT"
EXPORT: 20 rows from table "DB2INST1"."PROJECT"
EXPORT: 6 rows from table "DB2INST1"."PURCHASEORDER"
EXPORT: 41 rows from table "DB2INST1"."SALES"
EXPORT: 35 rows from table "DB2INST1"."STAFF"
EXPORT: 35 rows from table "DB2INST1"."STAFFG"
EXPORT: 2 rows from table "DB2INST1"."SUPPLIERS"
Disconnecting from database ... successful!
End time: Sat Jan 13 23:20:41 2018
檢查確認文件已經導出
db2inst1@suse11:~/db2move> ls
db2move.lst tab11.ixf tab14.ixf tab17a.001.lob tab19.ixf tab21.ixf (此處省略其餘若干文件)
5) 將上述的creatdb.sql、sample.ddl以及經過db2move導出的數據文件傳輸至目標端
db2inst1@suse11:~> cd ~
db2inst1@suse11:~> tar -cvf db2move.tar db2move
db2inst1@suse11:~> scp ./ddl/* db2inst1@192.168.29.135:/home/db2inst1/
db2inst1@suse11:~> scp ./db2move.tar db2inst1@192.168.29.135:/home/db2inst1/
6) 在目標端建立數據庫、數據庫對象
[db2inst1@localhost ~]$ db2 -tvf createdb.sql
CREATE DATABASE SAMPLE AUTOMATIC STORAGE YES ON '/home/db2inst1' DBPATH ON '/home/db2inst1/' USING CODESET UTF-8 TERRITORY CN COLLATE USING IDENTITY PAGESIZE 8192 DFT_EXTENT_SZ 32 CATALOG TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4 NO FILE SYSTEM CACHING AUTORESIZE YES INITIALSIZE 32 M MAXSIZE NONE TEMPORARY TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 32 FILE SYSTEM CACHING USER TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 32 NO FILE SYSTEM CACHING AUTORESIZE YES INITIALSIZE 32 M MAXSIZE NONE
DB20000I The CREATE DATABASE command completed successfully.
[db2inst1@localhost ~]$ db2 -tvf sample.ddl
(此處省略若干行)
DB20000I The SQL command completed successfully.
7) 對象建立完成後,須要與原庫作對比,檢查兩邊對象數目是否一致
原庫對象數目:
db2inst1@suse11:~/ddl> db2 "select count(*) from syscat.tables with ur"
1
-----------
444
1 record(s) selected.
db2inst1@suse11:~/ddl> db2 "select count(*) from syscat.indexes with ur"
1
-----------
396
1 record(s) selected.
目標端對象數目:
[db2inst1@localhost ~]$ db2 "select count(*) from syscat.tables with ur"
1
-----------
444
1 record(s) selected.
[db2inst1@localhost ~]$ db2 "select count(*) from syscat.indexes with ur"
1
-----------
396
經檢查,兩邊數據庫對象數目一致。
8) 將數據經過db2move導入
[db2inst1@localhost db2move]$ db2move sample load
Application code page not determined, using ANSI codepage 1208
***** DB2MOVE *****
Action: LOAD
Start time: Sun Jan 14 01:06:55 2018
Connecting to database SAMPLE ... successful! Server : DB2 Common Server V10.5.6
Binding package automatically ... /home/db2inst1/sqllib/bnd/db2common.bnd ... successful!
Binding package automatically ... /home/db2inst1/sqllib/bnd/db2move.bnd ... successful!
* LOAD: table "DB2INST1"."ACT"
-Rows read: 18
-Loaded: 18
-Rejected: 0
-Deleted: 0
-Committed: 18
(此處省略若干行)
* LOAD: table "DB2INST1"."CUST1"
*** WARNING 3107. Check message file tab4.msg!
*** SQL Warning! SQLCODE is 3107
*** SQL3107W There is at least one warning message in the message file.
-Rows read: 3
-Loaded: 0
-Rejected: 3
-Deleted: 0
-Committed: 3
(此處省略若干行)
Disconnecting from database ... successful!
End time: Sun Jan 14 01:07:02 2018
9) 經過檢查原庫與目標庫表的條數,驗證遷移數據的準確性,以sales表爲例:
db2inst1@suse11:~/ddl> db2 "select count(*) from sales with ur"
1
-----------
41
1 record(s) selected.
[db2inst1@localhost db2move]$ db2 "select count(*) from sales with ur"
1
-----------
41
1 record(s) selected.
10) 從第(8)步的信息,咱們能夠看到,因爲有identity標識列的存在,表CUST1的數據並無被導入到目標庫中,所以須要單獨對其進行裝載數據。
[db2inst1@localhost db2move]$ db2 "select * from cust1 with ur"
CUSTNO CUSTNAME
------ ----------------
0 record(s) selected.
從msg文件能夠得知,表CUST1對應的數據文件爲tab4.ixf,將其裝載到表CUST1中。
[db2inst1@localhost db2move]$ db2 "load from tab4.ixf of ixf modified by IDENTITYOVERRIDE insert into CUST1"
(此處省略若干行)
Number of rows read = 3
Number of rows skipped = 0
Number of rows loaded = 3
Number of rows rejected = 0
Number of rows deleted = 0
Number of rows committed = 3
[db2inst1@localhost db2move]$ db2 "select * from CUST1 with ur"
CUSTNO CUSTNAME
------ ----------------
100 ma
101 miao
102 miaomiao
3 record(s) selected.
db2 update db cfg for <dbname> using LOGSECOND 100 |
11) 執行到這裏,數據的遷移基本上算是「完工」了。可是因爲LOAD裝載不會檢查表的參考完整性約束和檢查約束,所以須要進行數據完整性檢查。執行如下SQL,找出處於set integrity pending狀態的表:
[db2inst1@localhost db2move]$ db2 "select char(TABNAME,20) TABNAME,STATUS,ACCESS_MODE,SUBSTR(CONST_CHECKED,1,1) FK_CHECKED,SUBSTR(CONST_CHECKED,2,1) CC_CHECKED FROM SYSCAT.TABLES WHERE STATUS='C' with ur"
TABNAME STATUS ACCESS_MODE FK_CHECKED CC_CHECKED
-------------------- ------ ----------- ---------- ----------
DEPARTMENT C N N Y
EMPLOYEE C N N N
EMP_PHOTO C N N Y
EMP_RESUME C N N Y
PROJECT C N N Y
PROJACT C N N Y
EMPPROJACT C N N Y
ACT C N N Y
ADEFUSR C N Y Y
PURCHASEORDER C N N Y
10 record(s) selected.
有10張表處於set integrity pending狀態,將這些表解除該狀態後,本次的遷移纔算是真正的完工。解除set integrity pending狀態步驟也是較爲繁瑣的,本文不作深刻探討。
本文使用db2look+db2move工具遷移作了較爲完整的介紹,力求詳細的同時,整個過程也會顯得較爲繁瑣。在平常的遷移操做中,因爲操做稍顯繁瑣,並且有其餘工具的存在,db2move工具使用的頻率較低,甚至不使用。而遷移環節離不開對象的定義,所以db2look工具則是不可或缺的。筆者認爲,對於db2move,有必定的瞭解認識便可,不須要過於深刻地研究;而用好db2look工具,則對於遷移、數據庫對象的理解會有更深的認識,值得深刻學習。