2014-07-14 86 views
0

我有兩個DB2數據庫(Database1和Database2),都包含一個名爲SubscriptionTable的表。兩個表都包含與用戶訂閱相關的數據,並且SubscriptionTable的列在兩個數據庫中都是相同的。DB2條件導入

現在我需要將Database1.SubscriptionTable中的數據複製(並覆蓋)到Database2.SubscriptionTable,但前提是Database2.SubscriptionTable中的LAST_UPDATED_TIMESTAMP列不超過特定日期。

因此,簡而言之,我想覆蓋Database2.SubscriptionTable中的訂閱數據,但前提是數據在特定日期後未被修改。

我可以使用現有的實用程序來實現此目的嗎? db2 import在哪裏我也可以指定一個條件(LAST_UPDATED_TIMESTAMP <'XXXX-XX-XX'),每一行被覆蓋?

+0

是數據庫彼此鏈接,所以你可以用一個SQL查詢解決這個問題? –

+0

他們沒有連接,但似乎建立數據庫之間的連接將是解決此問題的唯一方法(除開發將複製數據的自定義實用程序外)。謝謝 – soulfly1983

+0

另一種方法是複製整個表並在本地進行比較。 –

回答

1

DB2 IMPORT實用程序無法根據它們中的內容忽略行。

正如Gordon Linoff在評論中所建議的那樣,「最簡單」的方法是通過聯合,所以Database1.SubscriptionTable可以從Database2中訪問。

或者,你可以簡單地從數據庫1導出數據符合您的標準:

-- Connect to Database1 
export to data.del of del select * from SubscriptionTable 
          where last_updated_timestamp > ... 

-- Connect to Database2 
import from data.del of del insert into SubscriptionTable ... 
+0

僅導出符合條件的Database1中的數據wouldn' t工作,因爲LAST_UPDATED_TIMESTAMP列的值需要從Database2中獲取。 因此,當您建議DB2 Federation時,通過SQL訪問這兩個數據庫似乎是唯一的方法。 – soulfly1983

+0

另一種方法是從database1中導出整個表,並將其導入到database2中的臨時表中,然後使用SQL('MERGE')從database2中的臨時表中更新SubscriptionTable。 –