现在的位置: 首页 > 综合 > 正文

试验:db2 导入数据选项 ” replace ” 会保留没被覆盖的数据吗?

2018年01月16日 ⁄ 综合 ⁄ 共 2699字 ⁄ 字号 评论关闭
 思想:建一个表,插入部分数据,导出后,再插入不同的数据,导入加“replace”选项,观察db2move、import导入数据后的结果,过程比较简单,上代码:

1、建表、插入数据:

d:/>db2 connect to test user cwgladm using cwglpass

   数据库连接信息

 数据库服务器         = DB2/NT 8.2.9
 SQL 授权标识         = CWGLADM
 本地数据库别名       = TEST

d:/>db2 create table t(id numeric not null,name varchar(20),constraint t_p primary key(id))
DB20000I  SQL 命令成功完成。

d:/>db2 insert into t values(1,'chennan'),(2,'spsoft')
DB20000I  SQL 命令成功完成。

d:/>db2 select * from t

ID      NAME
------- --------------------
     1. chennan
     2. spsoft

  2 条记录已选择。

2、导出数据,两种导出方式:
db2move:

d:/>db2move test export -tn t -sn cwgladm -u cwgladm -p cwglpass

*****  DB2MOVE  *****

Action:      EXPORT

Start time:  Fri Jun 20 11:30:43 2008

All table names matching:  T;

All schema names matching:  CWGLADM;

Connecting to database TEST ... successful!  Server: DB2 Common Server V8.2.9

EXPORT:      2 rows from table "CWGLADM "."T"

Disconnecting from database ... successful!

End time:  Fri Jun 20 11:30:43 2008

export:

d:/>db2 export to exp_t.ixf of ixf select * from t
SQL3104N  Export 实用程序开始将数据导出到文件 "exp_t.ixf" 中。

SQL3105N  Export 实用程序已导出 "2" 行。

导出的行数:2

3、再次插入不同的数据,观察db2move 导入的结果:

d:/>db2 insert into t values(3,'compute'),(4,'Database')
DB20000I  SQL 命令成功完成。

d:/>db2 select * from t

ID      NAME
------- --------------------
     1. chennan
     2. spsoft
     3. compute
     4. Database

  4 条记录已选择。

d:/>db2move test import -io replace -u cwgladm -p cwglpass

*****  DB2MOVE  *****

Action:      IMPORT

Start time:  Fri Jun 20 11:33:29 2008

Connecting to database TEST ... successful!  Server: DB2 Common Server V8.2.9

* IMPORT:  table "CWGLADM "."T"
  -Rows read:          2
  -Inserted:           2
  -Rejected:           0
  -Committed:          2

Disconnecting from database ... successful!

End time:  Fri Jun 20 11:33:30 2008

d:/>db2 select * from t

ID      NAME
------- --------------------
     1. chennan
     2. spsoft

  2 条记录已选择。

4、再次插入不同的数据,观察import 导入的结果:

d:/>db2 insert into t values(3,'compute'),(4,'Database')
DB20000I  SQL 命令成功完成。

d:/>db2 select * from t

ID      NAME
------- --------------------
     1. chennan
     2. spsoft
     3. compute
     4. Database

  4 条记录已选择。

d:/>db2 import from exp_t.ixf of ixf replace into t
SQL3150N  PC/IXF 文件中的 H 记录具有产品 "DB2    02.00"、日期 "20080620"
和时间 "113449"。

SQL3153N  PC/IXF 文件中的 T 记录具有名称 "exp_t.ixf"、限定符 "" 和源 "
"。

SQL3109N  实用程序开始装入文件 "exp_t.ixf" 中的数据。

SQL3110N  实用程序已完成处理。从输入文件读取了 "2" 行。

SQL3221W  ...开始 COMMIT WORK。输入记录计数 = "2"。

SQL3222W  ...COMMIT 任何数据库更改成功。

SQL3149N 从输入文件中处理了 "2" 行。将 "2" 行成功插入到表中。"0" 行被拒绝。

读取行数         = 2
跳过行数         = 0
插入行数         = 2
更新行数         = 0
拒绝行数         = 0
落实行数         = 2

d:/>db2 select * from t

ID      NAME
------- --------------------
     1. chennan
     2. spsoft

  2 条记录已选择。

结论:加replace是先清除、后插入的动作,会清空表里所有数据,再插入要导入的数据。

抱歉!评论已关闭.