11g对数据泵新增了一些功能。这篇介绍新增的选项DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS。
Oracle11g的数据泵新增了一个DATA_OPTIONS选项,目前只有一个参数SKIP_CONSTRAINT_ERRORS。利用这个参数可以在导入数据的时候,忽略掉违反约束的数据,而使得其他正常的数据顺利的导入。
看一个简单的例子:
SQL> CREATE TABLE T_CONS (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));
表已创建。
SQL> INSERT INTO T_CONS SELECT ROWNUM, TNAME FROM TAB;
已创建17行。
SQL> COMMIT;
提交完成。
SQL> HOST expdp yangtk/yangtk directory=d_output dumpfile=t_cons.dp tables=t_cons Export: Release 11.1.0.6.0 – 64bit Production on 星期一, 13 10月, 2008 8:12:45 Copyright (c) 2003, 2007, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options启动 “YANGTK”.”SYS_EXPORT_TABLE_01″: yangtk/******** directory=d_output dumpfile=t_cons.dp tables=t_cons 正在使用 BLOCKS 方法进行估计…处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 192 KB处理对象类型 TABLE_EXPORT/TABLE/TABLE处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT . . 导出了 “YANGTK”.”T_CONS” 5.648 KB 17 行已成功加载/卸载了主表 “YANGTK”.”SYS_EXPORT_TABLE_01″ ****************************************************************************** YANGTK.SYS_EXPORT_TABLE_01 的转储文件集为: /export/home/oracle/t_cons.dp作业 “YANGTK”.”SYS_EXPORT_TABLE_01″ 已于 08:13:05 成功完成 |
现在创建了一个带主键的表,并插入了一些记录。然后利用expdp对这个表进行了导出操作。
SQL> DELETE T_CONS WHERE ID < 10;
已删除9行。
SQL> COMMIT;
提交完成。
SQL> HOST impdp yangtk/yangtk directory=d_output dumpfile=t_cons.dp content=data_only Import: Release 11.1.0.6.0 – 64bit Production on 星期一, 13 10月, 2008 8:15:25 Copyright (c) 2003, 2007, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options已成功加载/卸载了主表 “YANGTK”.”SYS_IMPORT_FULL_01″ 启动 “YANGTK”.”SYS_IMPORT_FULL_01″: yangtk/******** directory=d_output dumpfile=t_cons.dp content=data_only 处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA |
ORA-31693: 表数据对象 “YANGTK”.”T_CONS” 无法加载/卸载并且被跳过, 错误如下:
ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C0023309)作业 “YANGTK”.”SYS_IMPORT_FULL_01″ 已经完成, 但是有 1 个错误 (于 08:15:30 完成)
删除一些数据后,执行导入操作。由于表存在主键约束,因此导入会由于违反唯一约束而失败,这时任何数据都没有导入到表中。
而使用DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS参数,可以改变这种情况:
|
ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C0023309)
带主键的被拒绝行是:
拒绝的行 #1:
列 ID: 10
拒绝的行 #2:
列 ID: 11
拒绝的行 #3:
列 ID: 12
拒绝的行 #4:
列 ID: 13
拒绝的行 #5:
列 ID: 14
拒绝的行 #6:
列 ID: 15
拒绝的行 #7:
列 ID: 16
拒绝的行 #8:
列 ID: 17作业 “YANGTK”.”SYS_IMPORT_FULL_01″ 已于 08:17:58 成功完成
利用11g的新特性,可以导入那些不违反约束的记录,而忽略掉那些违反约束的数据。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。