从oracle转储文件导入特定的表?

时间:2012-08-06 08:22:40

标签: oracle plsql dump imp

我有一个巨大的oracle数据库的转储,因此不可能全部导入它。我想导入一个名为X的特定表。问题是X有外键。如果我只导入X,我将收到以下错误:

imp user/pass@dbName tables=X  rows=y ignore=Y
ORA-02291: integrity constraint violated - parent key not found

我已在本地拥有整个数据库(但没有数据),我想导入与X关联的所有表。我怎样才能实现?我安装了plsql。我还需要知道这些表的顺序,以便首先知道要导入的内容。

2 个答案:

答案 0 :(得分:3)

您可以在导入之前禁用所有数据库约束,然后重新启用它们。参见:

答案 1 :(得分:1)

几乎没有问题,所以我会逐一回答。

ORA-02291: integrity constraint violated - parent key not found

没有必要去猜测,因为你知道你没有表X的父记录。顺便说一下你可能也想使用标志CONSTRAINTS=N,因为你已经有了你所说的db。

“我想导入与X关联的所有表格。我怎样才能实现这一目标?”

除了手动查找所有依赖项(或使用数据字典表user_cons_columnsuser_constraints等进行查找)之外别无选择,并导入这些表。如果你不这样做,可以考虑一下。您将破坏数据完整性。如果仍然希望表X中的数据没有依赖关系,则禁用约束然后导入。但是你不会再次启用你的约束,我不知道你想要对数据损坏做什么。

“我还需要知道这些表的顺序,以便首先知道要导入的内容。”

导入前禁用约束,然后在导入后启用它们。在这种情况下,您不必担心订单。