2014-07-14 50 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。 –