ORACLE 10g:如何在没有外键约束错误的情况下导入?

时间:2012-02-29 15:24:02

标签: import oracle10g

我有一个数据转储然后我想将它导入另一个数据库(Oracle 10g)。目标DB已经有表(没有数据)和一些外键约束。我将按表导入数据,以避免约束错误。如果有人知道任何更简单的方法,请教我吗? (Oracle的导入工具没有自动识别表间关系的功能,是吗?)

2 个答案:

答案 0 :(得分:5)

您可以先禁用所有外键:

begin
  for cnst in (SELECT constraint_name, table_name FROM user_constraints WHERE constraint_type ='R') loop
    execute immediate 'alter table '|| cnst.table_name||' disable constraint ' || cnst.constraint_name ;
  end loop;
end;

加载数据后,执行相同操作以启用它们(只需将alter table命令更改为enable而不是disable

但这有风险,因为如果数据不符合您的约束 - 您将遇到问题......

答案 1 :(得分:1)

假设您具有模式级别的导出,源模式具有相同的外键约束,并且所有外键约束都在同一模式中的表之间,导入实用程序应自动处理外键约束。你不应该为此做任何事情(当然,当你进行导入时你必须忽略错误,因为它会尝试创建表并得到它们已经存在的错误。)