db2move导入具有外键约束的表中的数据

时间:2012-09-11 09:10:33

标签: database db2

如何在使用db2look,db2move备份和还原数据库时处理外键约束问题? DDL(使用db2look生成)在恢复数据库时会产生约束,因此在使用db2move导入数据期间会发生数据错误。

3 个答案:

答案 0 :(得分:2)

您可以使用几个选项来填充具有RI约束的空DB2数据库:

  • 检查数据库中的所有FK依赖项并相应地更改IMPORT语句的顺序,以防止瞬间违反RI约束。对于具有自引用外键的表,这可能不是一个选项。
  • 不使用IMPORT填充表,而是使用忽略表约束的LOAD实用程序。 LOAD会将带有约束的任何目标表(及其下游的依赖表)置于CHECK PENDING状态,这将阻止写访问。加载完所有表后,在这些表上使用SET INTEGRITY命令验证它们是否满足所有约束。
  • 将DDL中的ALTER TABLE语句重新定位到一个单独的脚本中,该脚本仅在填充了所有表后运行。

答案 1 :(得分:0)

  1. 首先禁用约束,然后执行db2move import。
  2. 将数据导入表格后,重新启用约束
  3. ALTER TABLE ALTER FOREIGN KEY NOT ENFORCED

    然后重新启用:

    ALTER TABLE ALTER FOREIGN KEY ENFORCED

    谢谢, 奈杜

答案 2 :(得分:0)

最好在不同的进程中执行表格defenition和fk约束defenition。 要在使用db2move工具加载数据时避免完整性检查,必须在执行导入/加载过程后执行fk defenition。

运行db2look以转储数据库的ddl之后。只需将外键约束分离到单独的文件即可。如果另一个对象像触发器,sp或不同文件上的视图那样更好。因此,在加载数据之后,执行fk constarint,triggers,sp和views。

祝你好运。