在使用db2look、db2move备份和恢复数据库时,如何处理外键约束问题?在恢复数据库时,DDL(使用db2look生成)会创建约束,因此在使用db2move导入数据时会出现数据错误。
hts6caw31#
有几个选项可用于填充具有RI约束的空DB2数据库:
IMPORT
ALTER TABLE
oknrviil2#
1.首先禁用约束,然后执行db2move import。1.将数据导入表后,重新启用约束未强制执行更改表更改外键然后重新启用:已强制执行更改表更改外键谢谢,奈度
whlutmcx3#
表定义和fk约束定义最好在不同的过程中执行,为了避免在使用db2 move工具装载数据时进行完整性检查,fk定义必须在导入/装载过程之后执行。在运行db2 look转储数据库的ddl之后,只需将外键约束分离到单独的文件中即可。如果其他对象(如triggers、sp或views)也在不同的文件中,则效果更好。因此,在加载数据之后,立即执行fk constarint、triggers、sp和views。祝你好运
3条答案
按热度按时间hts6caw31#
有几个选项可用于填充具有RI约束的空DB2数据库:
IMPORT
语句的顺序,以防止暂时违反RI约束条件。对于具有自引用外键的表,这可能不是一个选项。IMPORT
填入表格,而是使用LOAD公用程序,它会忽略表格限制条件。LOAD会将任何具有限制条件的目标表格(及其下游相依表格)置于CHECK PENDING状态,以防止写入存取。一旦加载所有表格,请在这些表格上使用SET INTEGRITY命令,以验证它们是否满足所有限制条件。ALTER TABLE
语句重新定位到一个单独的脚本中,该脚本仅在填充了所有表之后才运行。oknrviil2#
1.首先禁用约束,然后执行db2move import。
1.将数据导入表后,重新启用约束
未强制执行更改表更改外键
然后重新启用:
已强制执行更改表更改外键
谢谢,奈度
whlutmcx3#
表定义和fk约束定义最好在不同的过程中执行,为了避免在使用db2 move工具装载数据时进行完整性检查,fk定义必须在导入/装载过程之后执行。
在运行db2 look转储数据库的ddl之后,只需将外键约束分离到单独的文件中即可。如果其他对象(如triggers、sp或views)也在不同的文件中,则效果更好。因此,在加载数据之后,立即执行fk constarint、triggers、sp和views。
祝你好运