带主键约束条件的DB2 export 和 load
创建数据库DB1
create database db1
用DB2用户连接到DB1数据库上
CONNECT TO DB1 USER "db2" using db2;
创建TBL1, idx数据列是自增 且设置为主键
CREATE TABLE DB2.TBL1 ( IDX BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1, NO CACHE ) ,
NAME VARCHAR (10) NOT NULL , CONSTRAINT pk_tbl1 PRIMARY KEY ( IDX) ) IN USERSPACE1 ;
插入数据
insert into tbl1 (name) values('01');
insert into tbl1 (name) values('02');
insert into tbl1 (name) values('13');
insert into tbl1 (name) values('14');
insert into tbl1 (name) values('15');
insert into tbl1 (name) values('16');
insert into tbl1 (name) values('17');
insert into tbl1 (name) values('18');
insert into tbl1 (name) values('19');
insert into tbl1 (name) values('11');
insert into tbl1 (name) values('12');
insert into tbl1 (name) values('21');
insert into tbl1 (name) values('221');
insert into tbl1 (name) values('2221');
创建TBL2, 指定idx列为主键.
CREATE TABLE DB2.TBL2 ( IDX BIGINT NOT NULL, NAME VARCHAR (10) NOT NULL , CONSTRAINT pk_tbl2 PRIMARY KEY ( IDX) ) IN USERSPACE1 ;
将TBL1的数据export出来,放到tbl1.del文件
db2 export to tbl1.del of del select * from tbl1
尝试将tbl1.del的数据导入到tbl2里
D:\IBM>db2 load from tbl1.del of del replace into tbl2
SQL3501W 由于对数据库禁用了正向恢复,因此,表所在的表空间将不会处于备份暂挂状态。
SQL3109N 实用程序开始装入文件 "D:\IBM\tbl1.del" 中的数据。
SQL3500W 在时间 "2008-11-12 14:28:00.724079" 时,实用程序正在开始 "LOAD"阶段。
SQL3519W 开始装入一致点。输入记录计数 = "0"。
SQL3520W “装入一致点”成功。
SQL3110N 实用程序已完成处理。从输入文件读取了 "14" 行。
SQL3519W 开始装入一致点。输入记录计数 = "14"。
SQL3520W “装入一致点”成功。
SQL3515W 在时间 "2008-11-12 14:28:00.742835" 时,实用程序已完成了 "LOAD"阶段。
SQL3500W 在时间 "2008-11-12 14:28:00.743776" 时,实用程序正在开始 "BUILD"阶段。
SQL3213I 建立索引方式为 "REBUILD"。
SQL3515W 在时间 "2008-11-12 14:28:00.757556" 时,实用程序已完成了 "BUILD"阶段。
读取行数 = 14
跳过行数 = 0
装入行数 = 14
拒绝行数 = 0
删除行数 = 0
落实行数 = 14
删除TBL2的主键,然后再load数据
ALTER TABLE DB2.TBL2 DROP PRIMARY KEY ;
db2 load from tbl1.del of del replace into tbl2
增加TBL2的主键约束
ALTER TABLE DB2.TBL2 ADD CONSTRAINT PK_TBL2 PRIMARY KEY ( IDX) ;
指定TBL2的IDX数据列为自增长( 注意自增长列的起始值)
ALTER TABLE DB2.TBL2 ALTER COLUMN IDX SET GENERATED AS IDENTITY ( START WITH 14 INCREMENT BY 1 NO CACHE ) ADD CONSTRAINT PK_TBL2 PRIMARY KEY ( IDX) ;
D:\IBM>db2 "select * from tbl2"
IDX NAME
-------------------- ----------
0 01
1 02
2 13
3 14
4 15
5 16
6 17
7 18
8 19
9 11
10 12
11 21
12 221
13 2221
14 条记录已选择。
D:\IBM>db2 insert into tbl2 (name) values('222222')
DB20000I SQL命令成功完成。
D:\IBM>db2 "select * from tbl2"
IDX NAME
-------------------- ----------
0 01
1 02
2 13
3 14
4 15
5 16
6 17
7 18
8 19
9 11
10 12
11 21
12 221
13 2221
14 222222
15 条记录已选择。
创建TBL3
CREATE TABLE DB2.TBL3 ( IDX BIGINT NOT NULL, NAME VARCHAR (10) NOT NULL ) IN USERSPACE1 ;
创建TBL3的索引 再 IDX列上
CREATE UNIQUE INDEX DB2.IDX_TBL3 ON DB2.TBL3 (IDX ASC) PCTFREE 10 MINPCTUSED 10 ALLOW REVERSE SCANS PAGE SPLIT SYMMETRIC COLLECT SAMPLED DETAILED STATISTICS ;
D:\IBM>db2 load from tbl1.del of del replace into tbl3
SQL3501W 由于对数据库禁用了正向恢复,因此,表所在的表空间将不会处于备份暂挂状态
。
SQL3109N 实用程序开始装入文件 "D:\IBM\tbl1.del" 中的数据。
SQL3500W 在时间 "2008-11-12 14:53:59.257574" 时,实用程序正在开始 "LOAD"
阶段。
SQL3519W 开始装入一致点。输入记录计数 = "0"。
SQL3520W “装入一致点”成功。
SQL3110N 实用程序已完成处理。从输入文件读取了 "14" 行。
SQL3519W 开始装入一致点。输入记录计数 = "14"。
SQL3520W “装入一致点”成功。
SQL3515W 在时间 "2008-11-12 14:53:59.276708" 时,实用程序已完成了 "LOAD"
阶段。
SQL3500W 在时间 "2008-11-12 14:53:59.277644" 时,实用程序正在开始 "BUILD"
阶段。
SQL3213I 建立索引方式为 "REBUILD"。
SQL3515W 在时间 "2008-11-12 14:53:59.291441" 时,实用程序已完成了 "BUILD"
阶段。
读取行数 = 14
跳过行数 = 0
装入行数 = 14
拒绝行数 = 0
删除行数 = 0
落实行数 = 14
D:\IBM>db2 commit
DB20000I SQL命令成功完成。
D:\IBM>db2 "select * from tbl3"
IDX NAME
-------------------- ----------
0 01
1 02
2 13
3 14
4 15
5 16
6 17
7 18
8 19
9 11
10 12
11 21
12 221
13 2221
14 条记录已选择。
收起