如何使用'imp'命令仅导入Oracle中没有索引和约束的数据

时间:2009-09-16 11:48:37

标签: oracle

我们从客户端获取* .dmp文件,其中包含一些包含索引和约束的屏蔽表数据。 我的确有这些表结构(包括索引和约束)。 我想使用'imp'命令导入Oracle10g中没有索引和约束(存在于.dmp文件中)的数据。

我知道'imp'命令。请帮我告诉我'imp'命令中可用的选项,只导入数据。

我尝试过使用 - rows = yes indices = no但这没有帮助。

7 个答案:

答案 0 :(得分:9)

您应该能够指定indices = N和constraints = N。

欲了解更多信息:

%> imp help=y 

这是一个链接,其中包含有关选项的一些好消息: Oracle imp information

答案 1 :(得分:4)

我假设您的帖子中已经有数据库中的表和辅助结构,并且您只想抑制错误消息。如果确实如此,您想要的选项是IGNORE=Y

Oracle文档可在线获取。你没有说你正在使用什么版本,但是当你使用IMP时我会说9i非常合适。 Find out more.。 (在以后的版本中,您应该检查DataPump)。

答案 2 :(得分:1)

使用show = y选项导入转储。这将从dmp文件创建/提取脚本。现在,您可以从日志中删除索引和约束脚本,并针对数据库执行。

在这里您可以看到很多与exp / data泵相关的示例。 http://www.acehints.com/p/site-map.html

答案 3 :(得分:1)

您需要禁用所有触发器,然后使用CONSTRAINTS = N参数导入数据。考虑使用约束,外键和触发器导入表G3E_COMPONENT:

SQL>alter table G3E_COMPONENT disable all triggers;

导入您的数据:

imp userid=USER/XXXXX@ORCL CONSTRAINTS=N DATA_ONLY=Y STATISTICS=NONE file=export.exp log=imp.log TABLES=G3E_COMPONENT

应该做的伎俩

答案 4 :(得分:0)

IMHO IMP无法阻止应用约束并触发被触发,ignore = y仅忽略出现的错误。也许datapump允许它,我不知道。

所以你必须:

  1. 手动禁用导入表的所有触发器和约束
  2. 使用tables =< table names>进行导入rows = Y indices = N constraints = N
  3. 启用触发器
  4. 启用验证约束并解决所有错误(查找和编辑/删除有问题的值)。

答案 5 :(得分:0)

小心使用与您的数据库版本完全匹配的imp版本。我遇到了麻烦...

答案 6 :(得分:0)

Ignore=Y。它将忽略创建错误,因为您已经拥有架构。