impdp–table_exists_action参数实验

impdp在线帮助中关于TABLE_EXISTS_ACTION参数的描述:
导入对象已存在时执行的操作。
有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
但是具体又有什么效果呢,还是真实的感受一下吧,以下仅供参考:

模拟初始环境

create table test (id int,name varchar(255));
insert into test values('1','zhang');
insert into test values('2','li');

create table test1 (id int,name varchar(255));
insert into test1 values('3','wang');
commit;
查询结果应该:
SQL> select * from test;
        ID NAME
---------- ----------
         1 zhang
         2 li

SQL> select * from test1;
        ID NAME
---------- ----------
         3 wang

导出为test1

现在再插入以下数据:

insert into test values('4','xia');
insert into test1 values('5','ye');
insert into test values('6','qian');
commit;

导出为test2

不加参数就是默认skip,即TABLE_EXISTS_ACTION=skip

[oracle@ocm rzdb]$ impdp system/oracle directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log
Import: Release 11.2.0.3.0 - Production on 星期三 4月 24 21:43:48 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 
启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log 
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
ORA-39151: 表 "TEST"."TEST" 已存在。由于跳过了 table_exists_action, 将跳过所有相关元数据和数据。
ORA-39151: 表 "TEST"."TEST1" 已存在。由于跳过了 table_exists_action, 将跳过所有相关元数据和数据。
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已经完成, 但是有 2 个错误 (于 21:43:50 完成)

APPEND:

[oracle@ocm rzdb]$ impdp system/oracle directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log TABLE_EXISTS_ACTION=append

Import: Release 11.2.0.3.0 - Production on 星期三 4月 24 21:50:19 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 
启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log TABLE_EXISTS_ACTION=append 
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
表 "TEST"."TEST" 已存在。由于附加了 table_exists_action, 数据将附加到现有表, 但是将跳过所有相关元数据。
表 "TEST"."TEST1" 已存在。由于附加了 table_exists_action, 数据将附加到现有表, 但是将跳过所有相关元数据。
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 导入了 "TEST"."TEST"                               5.453 KB       4 行
. . 导入了 "TEST"."TEST1"                              5.429 KB       2 行
作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已于 21:50:23 成功完成

查询结果:

SQL> select * from test;

        ID NAME
---------- ----------
         1 zhang
         2 li
         1 zhang
         2 li
         4 xia
         6 qian

已选择6行。

SQL> select * from test1;

        ID NAME
---------- ----------
         3 wang
         3 wang
         5 ye

由此可以看出append其实是在原有的数据基础上再增加现导入的数据

TRUNCATE:

[oracle@ocm rzdb]$ impdp system/oracle directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log TABLE_EXISTS_ACTION=truncate

Import: Release 11.2.0.3.0 - Production on 星期三 4月 24 21:54:20 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 
启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** directory=rzdb dumpfile=test2.dmp schemas=test logfile=test2.log TABLE_EXISTS_ACTION=truncate 
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
表 "TEST"."TEST" 已存在且已截断。由于截断了 table_exists_action, 将加载数据, 但是将跳过所有相关元数据。
表 "TEST"."TEST1" 已存在且已截断。由于截断了 table_exists_action, 将加载数据, 但是将跳过所有相关元数据。
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 导入了 "TEST"."TEST"                               5.453 KB       4 行
. . 导入了 "TEST"."TEST1"                              5.429 KB       2 行
作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已于 21:54:23 成功完成

查询结果:

SQL> select * from test;

        ID NAME
---------- ----------
         1 zhang
         2 li
         4 xia
         6 qian

SQL> select * from test1;

        ID NAME
---------- ----------
         3 wang
         5 ye

 

REPLACE:先drop掉表,然后创建表,再最后完成数据插入

[oracle@ocm rzdb]$ impdp system/oracle directory=rzdb dumpfile=test1.dmp schemas=test logfile=test1.log TABLE_EXISTS_ACTION=replace

Import: Release 11.2.0.3.0 - Production on 星期三 4月 24 22:01:09 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 
启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** directory=rzdb dumpfile=test1.dmp schemas=test logfile=test1.log TABLE_EXISTS_ACTION=replace 
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 导入了 "TEST"."TEST"                               5.429 KB       2 行
. . 导入了 "TEST"."TEST1"                              5.421 KB       1 行
作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已于 22:01:14 成功完成

查询结果:

SQL> select * from test;
        ID NAME
---------- ----------
         1 zhang
         2 li

SQL> select * from test1;
        ID NAME
---------- ----------
         3 wang

 

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据