快速的import或是load多个DB2主从表案例描述 |
本文标签:DB2 主从表 文章主要描述的是正确快速的 import 或是 load 多个 DB2 主从表的实际操作步骤,假如你对import 或是 load 多个 DB2 主从表的实际操作步骤,有兴趣了解的话,你就可以浏览以下的文章了 。 问题 在数据库日常维护中,数据库管理员有时候需要在不同的数据库间移动大量的数据,而这些数据在我们的业务中具有主从(父子)表的关系,那么在我们导出、导入或装入的时候,有时会遇到SQL0530N ,SQL0668N 的报错信息,那么我们应该如何避免这些错误,以确保这些操作能正确、快速的完成呢? 解答 假设我们创建了如下两个DB2 主从表:
如果主表 PARENTT 中未导入数据,那么我们在向从表 CHILDT 中使用 IMPORT 导入数据时会遇到错误 SQL0530N ,之所以有这个错误,是因为在IMPORT外键约束需要检查参照完整性,如果主表中没有相关记录,是不允许导入该数据的 。
的插入或更新值不等于父表的任何父键值 。 若使用 LOAD 方式可以装入数据,因为LOAD设计为在装入时忽略约束检查,但是在查询数据时,会遇到SQL0668N RC=1
SQL0668N 不允许对表 " HUANGDK.CHILDT" 执行操作,原因码 "1" 。 原因码"1"表示:表 "HUANGDK.CHILDT"处于“检查暂挂”状态 。未强制检查从表" HUANGDK.CHILDT"的参照完整性,并且表的内容可能是无效的 。如果从属表处于检查暂挂状态,则对于未处于检查暂挂的父表或基础表的操作也可能接收到此错误 。 在装入主表 PARENTT 的数据后,可以使用如下语句使表恢复到正常状态:
对于具有大量DB2 主从表需要装入的操作,上述语句会浪费数据库管理员大量的时间,并且如果在主表数据未装入前执行上述语句,同样会遇到 SQL0530N 的报错 。 其实,如果我们先装入或导入主表数据,那么就不会遇到上述错误,也不需要执行set integrity语句大大简化了操作 。我们从系统视图SYSCAT.REFERENCES可以找到表的主从关系,方法是使用如下 SQL 语句: db2 "select substr(REFTABSCHEMA,1,20) as 主表模式,substr(REFTABNAME,1,30) as 主表,substr(TABSCHEMA,1,20) as 从表模式,substr(TABNAME,1,30) as 从表 from SYSCAT.REFERENCES" 主表模式
|