2014-07-14 5 views
0

둘 다 두 개의 DB2 데이터베이스 (Database1 및 Database2)에 SubscriptionTable이라는 테이블이 있습니다. 두 테이블 모두 사용자 가입 관련 데이터를 포함하고 있으며 SubscriptionTable의 열은 두 데이터베이스에서 동일합니다.DB2 조건부 반입

이제 Database2.SubscriptionTable의 LAST_UPDATED_TIMESTAMP 열이 특정 날짜보다 크지 않은 경우에만 Database1.SubscriptionTable의 데이터를 Database2.SubscriptionTable에 복사 (및 덮어 쓰기)해야합니다.

간단히 말해서 Database2.SubscriptionTable의 구독 데이터를 덮어 쓰고 싶지만 특정 날짜 이후에 데이터가 수정되지 않은 경우에만 덮어 쓰고 싶습니다.

이러한 목적으로 기존 유틸리티를 사용할 수 있습니까? db2 import 여기서 각 행을 겹쳐 쓰는 동안 조건 (LAST_UPDATED_TIMESTAMP < 'XXXX-XX-XX')을 지정할 수 있습니까?

+0

이 데이터베이스가 서로 연결되어 있습니다 :

또는 당신은 단순히 당신의 기준을 충족 Database1에서 데이터를 내보낼 수 있을까? –

+0

그들은 연결되어 있지 않지만 데이터를 복사 할 사용자 지정 유틸리티를 개발하는 것 외에는이 문제를 해결할 수있는 유일한 방법은 DB 간의 연결을 설정하는 것 같습니다. 감사합니다 – soulfly1983

+0

대안은 전체 테이블을 복사하고 비교를 로컬로 수행하는 것입니다. –

답변

1

DB2 IMPORT 유틸리티에는 행을 무시하는 기능이 없습니다.

고든 리노프 (Gordon Linoff)가 언급 한 바와 같이 "가장 쉬운 방법은 연합을 통해 이루어지기 때문에 Database2.SubscriptionTable은 Database2에서 액세스 할 수 있습니다. 당신은 SQL 쿼리와 함께이 문제를 해결 할 수 있도록

-- 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의 데이터 만 반출하면 ' LAST_UPDATED_TIMESTAMP 열 값을 Database2에서 가져와야합니다. 그래서 DB2 Federation을 제안하면 SQL을 통해 두 데이터베이스에 액세스 할 수있는 유일한 방법 인 것 같습니다. – soulfly1983

+0

대안은 database1에서 전체 테이블을 내보내고 database2의 임시 테이블로 가져온 다음 SQL (MERGE)을 사용하여 database2의 임시 테이블에서 SubscriptionTable을 업데이트하는 것입니다. –