2011-08-17 7 views
0

가정 : 동일한 쿼리가 두 테이블에서 실행되는두 테이블을 프로그래밍 방식으로 비교하는 방법은 무엇입니까?

  • 두 테이블은
  • 데이터베이스 테이블이 5 월의 일부 다른 스키마에 거주하거나 데이터베이스가 동일하지 않은 경우
  • 을하지 않을 수 있습니다 동일한 버전의 경우 해당 버전 또는 패치 수준이 보장되지 않습니다.
  • 데이터 순서는 두 테이블에서 동일합니다. 데이터 정렬
  • 하나 개의 테이블은 다음 열을 더 가지고있다 다른
  • 하나 개의 테이블이 그것을 참조 2- 구별 challanges

    가있는 다른

다음 행을 갖는 것이 가능하다

  • 실행 비교
  • 차이
을 정리하여 읽기 쉬운 보고서를 생산 다음과 같은 접근 방식은

If (table1 and table 2 have the same number of columns) 
    For every row found in table1 check 
    If that same identical row exists in table2 
     And if it does not due to some column mismatch 
      Find the closes match possible and report column differences 
      If best match can be discovered, report column difference, else 
       report can result is ambiguous 
        ... 

이 합리적인 접근 방식을 작동 할 경우

내가 궁금해? 위의 가정 중 일부를 감안할 때 대안을 추천 할 수 있습니까?

답변

2

내 대답은 red-gate SqlCompare입니다. 그들은 스키마와 데이터 비교 도구를 가지고 있습니다. 도구를 사용하면 하나의 DB를 다른 것으로 보이게 만드는 스크립트를 생성 할 수 있습니다.

나는 데이터가 동일한 개체를 나타내는하도록되어, 다음 행의 차이의 열 번호와 번호를 무시 고객

1

음, 최대 절전 모드와 같은 ORM을 사용하면 일반 Java 개체 (여기서는 Java를 사용한다고 가정 함)와 같은 개체 (테이블)를 비교할 수 있습니다.

즉, 모든 가정을 설명하는 Comparator를 작성할 수 있습니다.

1

다른 레드 게이트와 아무 관련이 없다?

그렇다면, 나는 큰 시작하고 아래로 내 방식으로 작동 것 :

  1. 그림을 두 테이블에있는 열입니다.
  2. 테이블의 키를 찾거나 정의하십시오.
  3. 여러 조인을 사용하여 몇 개의 SQL 쿼리를 실행하여 두 테이블에 어떤 행이 있는지, 어떤 테이블에없는 행이 어떤 것인지 등을 알려줍니다.
관련 문제