서로 다른 두 스키마간에 데이터를 비교할 수있는 도구가 있습니까?


11

데이터베이스를 새 스키마로 마이그레이션하고 있지만 데이터가 올바르게 이동되었는지 확인하려고합니다.

기존의 데이터 비교 도구는 스키마가 동일한 경우 두 데이터베이스의 차이점을 비교할 수 있습니다. 우리의 경우 테이블 디자인이 변경되었지만 이전 스키마의 모든 데이터가 새로운 스키마에 있으며 조금 움직여서 올바른지 확인해야합니다. 우리는 수천만 개의 행을 가지고 있으므로 수동 검사는 옵션이 아닙니다.

이러한 유형의 비교에 도움이되는 도구가 있습니까?

사용자 정의 솔루션 개발을 시작하는 데 도움이되는 라이브러리 / 프레임 워크가 없다면?

이 경우 SQL Server 2008에 필요한 경우 데이터베이스 별 솔루션을 사용하게되어 기쁩니다.

내 솔루션 :VIEW 이전 데이터베이스에서 새 데이터베이스 테이블과 동일한 필드를 사용하여 각 테이블을 작성하여 두 데이터 세트를 비교하고 있습니다.

그런 다음 여기에 설명 된 기술을 사용하여 데이터를 비교합니다. SQL Server에서 두 테이블을 비교하는 가장 짧고 빠르고 쉬운 방법 : UNION!

전체 테이블 구조가 이전 데이터베이스와 유사하고 필드가 한 테이블에서 다른 테이블로 이동하거나 삭제 또는 추가되었으므로이 마이그레이션에서 운이 좋았습니다. 삭제 및 추가 된 경우 비교할 항목이 없습니다. 이동 또는 집계 된 필드에 대해보기에서 계산을 수행하여 비교할 올바른 정보를 제공합니다.

UNION비교 쇼 나에게 차이 만 행, 그래서 즉시 데이터가 올 나는 빈 결과 집합을 얻을.


1
스키마가 변경된 경우 데이터가 올바른지 어떻게 알 수 있습니까? 테이블이 분할되거나 결합 된 경우 어떻게됩니까?
gbn


@AaronBertrand-귀하의 의견에 감사하지만 (3 년 전) 나는 이것에 대한 도구의 가용성을 조사했지만 다른 스키마 간 비교를 수행 할 수있는 것을 찾지 못했습니다 . 나는 여전히 당신이 필요로하는 도구를 구매할 수 있기를 바랍니다.
Tony

@Tony Red-Gate의 도구를 사용하여 확실히 할 수 있습니다 (다른 것들에 대해서는 확실하지 않음), 수동 매핑 만하면됩니다.
Aaron Bertrand

@Tony 다른 스키마, 동일한 데이터베이스? 아니면 다른 스키마, 다른 데이터베이스?
Aaron Bertrand

답변:


7

서로 다른 두 스키마를 비교하는 것은 불가능하지 않으며 결과에 대한 자신감 을 계산 한 것입니다. 은행 조정 기술 에서 본질적으로 차용했습니다.

중요 : 이 조정은 대상이 데이터 컨텍스트에서 소스와 정확히 일치하는지 확인하는 것이 아니라 (새로운 시스템으로 마이그레이션하는 이유가 있기 때문에) 불일치를 설명해야합니다!

기초:

  1. 측정에 사용할 측정 항목을 식별합니다 (예 : 총 사용자 수, 모든 연령의 합계, 사용자 ID 및 우편 번호 ...). 총계, 평균 및 샘플 / 상세 레코드
  2. 이 데이터를 일반적인 위치 (보기 / 보고서 / 합리적인 방법으로)에 덤프하십시오.
  3. 데이터를 비교하고 불일치가 설명 될 수 있는지 확인하십시오

나는 일반적으로 비교를 여러 가지 방법으로 나누었습니다 (특히 세부적인 지표의 경우).

  • 테이블 별 : 일반적으로 소스 테이블을 정의로 사용하여 대상 DB에서 소스 테이블 데이터보기 및 재생을위한 뷰 세트를 작성합니다.
  • 객체 별 : DB와 저장 대상에 따라 여러 테이블에서 객체 (예 : 사용자)에 대한 전체적인 뷰 를 생성하는 것이 더 합리적 일 수 있습니다. 위의 뷰를 생성하여 객체를 결과 집합
  • 보고서 별 : 소스 DB에 포괄적 인 관리 보고서 세트가있는 경우 다른 기법은 동일한 형식으로 해당 보고서를 재생산하는 것입니다.

기법:

비교할 항목을 생성하는 데 사용한 방법에 관계없이 조정 가능한 소스 및 대상 데이터를 보유하는 파일 /보기 / DB 세트로 끝납니다. 매체에 따라 일반적으로 사용 가능한 도구 중 하나를 사용할 수 있습니다 그들을 비교합니다. 내 선호는 다음과 같습니다.

  1. 파일 비교
    SourceDB와 DestinationDB에 대해 두 개의 서로 다른 폴더 (시간 / 버전 스탬프가 표시되어 조정시기를 알 수 있음)를 사용하여 메트릭의 출력을 관련 이름이 지정된 파일로 덤프 한 다음 비교 도구 (예 : CSDiff )를 사용하여 차이점을 식별하십시오.

  2. Excel 비교
    특히 관리 보고서를 처리 할 때 보고서를 비교하기 위해 통합 문서 세트 Excel을 작성합니다 (본질적으로 VLookups 사용 및 총계 비교).

  3. 데이터 비교
    조정 데이터를 파일 또는 보고서로 출력하는 대신 별도의 DB로 출력 한 다음 Redgate SQL Data Compare 와 같은 것을 사용 하여 DB를 비교하십시오.

다른 도구들 :

이 중 어느 것도 시도하지 않았지만 '데이터 조정 도구'에 대한 빠른 Google 검색은 다음을 제공합니다.

다른 것도 있지만 합리적으로 보이는 것들이었습니다


제안 해 주셔서 감사합니다. 당신이 말했듯이, 그것은 불가능하지 않습니다 (현재 솔루션을 개발 중입니다) 그것은 어렵습니다. 언급 한 방법을 살펴 보겠습니다.
Tony

아니오 @Tony 걱정, 내가 찾은 트릭없는 것은 (당신은 그냥 가능하면 그러한 노력을 최소화 관하여, 일부 사용자 지정 물건을 작성해야합니다) 각 단계에 대한 기존의 도구를 시도하고 작은 단계로 그것을 깰하고 찾을 수 있습니다
비 커튼 앤드류

6

두 개의 서로 다른 데이터베이스 디자인에서 데이터를 비교하려면 데이터를 비교하기 위해 직접 코딩 된 SQL을 작성해야합니다.

  • 테이블이 분할되거나 결합 된 경우 어떻게됩니까?
  • 날짜 시간이 있다면 이제 작은 날짜 시간 = 데이터가 다름
  • ...

데이터를 검사하기위한 프레임 워크 라이브러리가 없습니다. 서로 다른 두 데이터베이스에 동일합니다.

변경 또는 수정 한 내용 만 아는 사람


나는 많이 두려워했지만 누군가가 그런 비교를 한 경우에 물어 볼 것이라고 생각했습니다. 쿼리 작성 속도를 높일 수있는 도구가 있기를 바랐지만 처음부터 무언가를 작성해야 할 것입니다.
Tony

1
@Tony : yep : 도구가 "무엇을 잘못했는지" "우리가 바꾼 내용"과 분리 할 수 ​​없기 때문입니다.
gbn

5

다른 스키마를 비교하는 것은 불가능할 것입니다. 문제를 해결하기 위해 비교해야 할 데이터를 알아낼 것입니다. 그런 다음 각 서버에서 비교하려는 데이터를 가져 오는 뷰를 작성합니다 (데이터 유형 등을 고려).

두보기가 동일하면 Red Gate Data Compare 와 같은 타사 도구를 사용하여 어떤 행이 다른지 확인합니다.

고통스러워 행운을 빕니다!


1
당신은 그것이 불가능하다고 말하고 가능한 해결책을 제공합니다. :) 실제로 작업 한 방법은 외부 도구를 사용하여 결과를 비교하지 않고 SQL에서 모두 수행한다는 점을 제외하고는 제안과 비슷합니다. 감사.
Tony

2

몇 년 전 저는 두 데이터베이스 간의 데이터 비교를 위해 도구를 작성했습니다. 그 이후로 상용 소프트웨어로 변환하여

www.sql-server-tool.com

  • 단일 라이센스 비용은 99 $이지만 30 일 동안 무료로 사용해 볼 수 있습니다.

"SQL Server Comparison Tool"의 SCT라는 프로그램 (이름을 정하는 데는 결코 도움이되지 않았습니다.)-선택된 열을 무시하거나 비교 방법 (레코드 별 또는 기본 키 / 지수 비교). 매개 변수를 다시 입력 할 필요없이 비교 "세션"을 저장하고 나중에 재생할 수 있습니다. 명령 행 매개 변수를 사용하여 비교를 완전히 자동화 할 수 있습니다.

수천만 행의 경우 약간 느릴 수 있습니다.이 경우 더 작은 데이터 하위 집합으로 시작하는 것이 좋습니다. 처음 1,000 행만 비교하고 프로세스의 미세 조정이 필요한지 확인하십시오.

다리우스 디지 아울 토프 스키-긴 토우 트


앱을 추천 해 주셔서 감사합니다. 사용해 보았지만 다른 스키마를 비교하지는 않습니다 . 첫 번째 테이블에서 데이터를 가져 오는 중에 실패했습니다. 또한 응용 프로그램이 비교할 행 수를 제한하는 방법이없는 것처럼 가지고있는 데이터 양을 처리하는지 확실하지 않습니다. 내가 테스트 한 테이블에는 9 천만 개의 행이 있습니다.
Tony
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.