import 或是 load多个DB2主从表谈何容易?

数据库
以下的文章主要向大家描述的是正确快速地 import 或是 load 多个 DB2 主从表的实际操作流程,以下就是文章的主要内容讲述。

此文章主要向大家讲述的是如何正确快速地 import 或是 load 多个 DB2 主从表?以下的文章将会给你相应的解决方案,以下的文章主要是介绍快速地 import 或是 load 多个 DB2 主从表方案,以下就是相关内容的具体描述。
 

 

问题

在数据库日常维护中,数据库管理员有时候需要在不同的数据库间移动大量的数据,而这些数据在我们的业务中具有主从(父子)表的关系,那么在我们导出、导入或装入的时候,有时会遇到SQL0530N ,SQL0668N 的报错信息,那么我们应该如何避免这些错误,以确保这些操作能正确、快速的完成呢?

解答

假设我们创建了如下两个DB2 主从表:

  1. CREATE TABLE PARENTT(ID INT NOT NULL,  
  2. NAME CHAR(20) NOT NULL,  
  3. CONSTRAINT P_PT PRIMARY KEY(ID))  
  4. CREATE TABLE CHILDT (ID INT NOT NULL,  
  5. CNAME CHAR(40) NOT NULL,  
  6. PID INT,  
  7. CONSTRAINT P_CT PRIMARY KEY(ID),  
  8. CONSTRAINT F_CT FOREIGN KEY (PID) REFERENCES PARENTT (ID) ON DELETE CASCADE)  

如果主表 PARENTT 中未导入数据,那么我们在向从表 CHILDT 中使用 IMPORT 导入数据时会遇到错误 SQL0530N ,之所以有这个错误,是因为在IMPORT外键约束需要检查参照完整性,如果主表中没有相关记录,是不允许导入该数据的。

  1. db2 "import from child.del of del insert into childt"  
  2. SQL0530N FOREIGN KEY "HUANGDK.CHILDT.F_CT" 

的插入或更新值不等于父表的任何父键值。

若使用 LOAD 方式可以装入数据,因为LOAD设计为在装入时忽略约束检查,但是在查询数据时,会遇到SQL0668N RC=1

  1. db2 "load from child.del of del insert into childt"  
  2. db2 "select * from childt" 

SQL0668N 不允许对表 " HUANGDK.CHILDT" 执行操作,原因码 "1"。

 

原因码"1"表示:表 "HUANGDK.CHILDT"处于“检查暂挂”状态。未强制检查从表" HUANGDK.CHILDT"的参照完整性,并且表的内容可能是无效的。如果从属表处于检查暂挂状态,则对于未处于检查暂挂的父表或基础表的操作也可能接收到此错误。

在装入主表 PARENTT 的数据后,可以使用如下语句使表恢复到正常状态:

  1. db2 set integrity for huangdk.childt immediate checked 

对于具有大量主从表需要装入的操作,上述语句会浪费数据库管理员大量的时间,并且如果在主表数据未装入前执行上述语句,同样会遇到 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"

主表模式

主表

 

从表模式

 

从表

 

 

 

  1. .  
  2. .  
  3. ASN_DOWN_TC_M6101 IBMQREP_SENDQUEUES ASN_DOWN_TC_M6101 IBMQREP_SUBS  
  4. ASN_DOWN_TC_M6101 IBMQREP_SUBS ASN_DOWN_TC_M6101 IBMQREP_SRC_COLS  
  5. HDK PARENTT HDK CHILDT 

以上的相关内容就是对快速地 import 或 load 多个 DB2 主从表的介绍,望你能有所收获。

【编辑推荐】

  1. DB2数据类型转换要用到的操作代码描述
  2. DB2数据库CODESET在Linux下的实现流程
  3. DB2数据库CODESET与Linux
  4. DB2数据库解死锁之shell脚本经典版!
  5. DB2双机HA的实现在Linux上很简单!
责任编辑:佚名 来源: 人民邮电出版社
相关推荐

2010-08-10 15:55:27

DB2 主从表

2022-06-10 09:30:59

IBM

2012-05-24 13:24:00

Linux操作系统

2010-08-18 17:45:36

DB2数据库

2010-11-03 15:49:32

DB2删除表

2020-12-08 14:33:16

云转型云原生汇量科技

2010-11-01 11:13:57

DB2表管理

2010-11-01 12:11:43

DB2表空间

2012-11-20 09:57:14

2010-11-01 16:07:22

DB2表空间

2010-11-03 15:35:27

DB2修改表

2010-09-01 10:38:47

DB2统计信息

2009-04-16 15:38:18

DB2IMPORT性能

2010-07-29 09:14:57

DB2数据库表

2010-08-05 15:17:43

DB2提高IMPORT

2010-07-28 14:07:51

DB2数据库

2010-11-01 16:38:13

DB2表空间

2010-11-01 16:44:43

DB2表空间

2010-11-02 14:45:12

DB2创建表空间

2010-09-01 11:17:29

DB2备份
点赞
收藏

51CTO技术栈公众号