동일한 구조의 두 데이터베이스를 비교할 수 있습니까? 두 개의 데이터베이스 DB1과 DB2가 있고 두 데이터베이스 사이에 데이터 차이가 있는지 확인하고 싶다고 가정 해 보겠습니다.
동일한 구조의 두 데이터베이스를 비교할 수 있습니까? 두 개의 데이터베이스 DB1과 DB2가 있고 두 데이터베이스 사이에 데이터 차이가 있는지 확인하고 싶다고 가정 해 보겠습니다.
답변:
(대부분의 이러한 도구는 구조 만 비교할 수 있지만 데이터는 비교할 수 없습니다.)
무료 :
상업용 :
apgdiff
상속 테이블을 잘 지원하지 않는 것 같고 사용하려고 할 때 예외가 즉시 발생합니다. WbSchemaDiff
아주 잘 작동합니다, 놀랍습니다!
pg_dump
두 데이터베이스에서 사용 하고 파일을 비교해 보십시오 .
pg_dump
이며 괜찮습니다. 당신과 상당한 차이 pg_dump
가 보인다면 비교할 수없는 것들을 비교하려고 할 것입니다. 적어도 PG dbs를 비교하기 위해.
psql -c '\x' -c 'SELECT... ORDER BY...'
대신 pg_dump
.
다른 무료 앱 ( 구조 만 비교할 수 있지만 데이터는 비교할 수 없음 ) :
DBeaver- 데이터베이스, 테이블 등을 선택하여 서로 비교할 수 있습니다.
많은 도구를 평가하고 다음과 같은 해결책을 찾았습니다.
스키마 비교 :
가장 흥미로운 것은 Liquibase, Persyas 및 PgCodeKeeper입니다.
( 문제 ) Liquebase는 다음을 변환합니다.
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
으로
BIGSERIAL
그래서 사용이 거부되었습니다
( 문제 ) Persyas는 추가 스키마를 추가하고 다음을 던지기 시작할 때까지 잘 작동했습니다.
pyrseas_1 | TypeError: 'NoneType' object is not iterable
그래서 나는 PgCodeKeeper 가 완벽하게 작동하고 살아 있음을 발견 했습니다 (릴리스를 확인할 수 있습니다). 다음 명령을 사용합니다.
./pgcodekeeper-cli.sh -E -I ./ignore.txt \
-s "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-t "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-o /result/schema-diff-$(date +'%m%d%y_%H%M%S').sql
데이터 비교 : Liquebase를 사용하려고했지만 작동하지 않습니다. 답이없는 질문에서 시도한 단계를 볼 수 있습니다. 하는 두 데이터베이스의 데이터 차이에 대한
그래서 다른 프로젝트 SQL Workbench / J를 찾았습니다. 정말 잘 작동하고 SQL에서 reall diff를 생성합니다. 다음 명령을 사용합니다.
java -jar /sqlworkbench.jar -command="'WbDataDiff -excludeTables=$EXCLUDE_TABLES \
-referenceConnection=$REFERENCE_CONNECTION \
-targetConnection=$TARGET_CONNECTION -referenceSchema=$1 \
-targetSchema=$1 -file=$DIFF_RESULT_FILE -singleFile=true \
-includeDelete=true -ignoreMissingTarget=true ;'"
두 도구 모두 개체 필터링을 지원합니다. 정말 편리합니다.
마이그레이션
마지막으로 마이그레이션 / 버전 추적을 위해 Liquebase를 사용합니다.
Postgres에 대한 포괄적 인 비교 도구를 개발 중입니다. 베타 버전에서는 무료입니다.
처음에는 이것은 스키마 (DDL) 비교 일 뿐이지 만 데이터도 확장 할 것입니다. 나는 이것이 개발 환경, 운영 등의 작동 방식을 변경하지 않고도 현재 RDBMS에서 이동하기 위해 많은 상점에서 필요한 도구라고 생각합니다.
내가 본 최고의 도구 https://pythonhosted.org/Pyrseas/
데이터베이스 A dbtoyaml에서 덤프 가져 오기 ...
A => B yamltodb에서 마이그레이션 생성 ... [1 단계에서 생성 된 파일]
또한 데이터베이스의 데이터를 비교하는 도구를 찾고 있습니다 (특히 Redshift DB를 비교하는 데 관심이있었습니다). 지금까지 내가 찾은 최고는 https://www.dbbest.com/products/database-compare-suite/#close 입니다. 불행히도 무료 평가판은 하루 후에 만료됩니다.
2 개의 라이브 PostgreSQL 데이터베이스 (덤프가 아님), 테이블 데이터 및 시퀀스를 비교하는 도구를 만들었습니다. 꽤 초기에는 내가 원하는 것을 달성했습니다. 어쩌면 당신에게도 도움이 될 수 있습니다.