程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> import 或是 load多個DB2主從表談何容易?

import 或是 load多個DB2主從表談何容易?

編輯: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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved