동일한 구조의 두 데이터베이스를 비교할 수 있습니까? 두 개의 데이터베이스 DB1과 DB2가 있고 두 데이터베이스 사이에 데이터 차이가 있는지 확인하고 싶다고 가정 해 보겠습니다.
답변
몇 가지 도구가 있습니다.
(대부분의 이러한 도구는 구조 만 비교할 수 있지만 데이터는 비교할 수 없습니다.)
무료 :
- pgquarrel : http://eulerto.github.io/pgquarrel (스키마 차이)
- apgdiff http://apgdiff.com/ (스키마 차이)
- Liquibase (Cross DBMS) : http://www.liquibase.org (스키마 차이)
- pgAdmin https://www.pgadmin.org (pgAdmin4의 스키마 차이)
- WbDataDiff (교차 DBMS) : http://www.sql-workbench.net/manual/compare-commands.html#command-data-diff ( data diff)
- WbSchemaDiff (교차 DBMS) : http://www.sql-workbench.net/manual/compare-commands.html
- Migra https://migra.djrobstep.com/ (스키마 차이)
상업용 :
- DB 비교기 : http://www.sqlmanager.net/en/products/postgresql/dbcomparer
- Aqua Data Studio : http://docs.aquafold.com/docs-diff-schema.html
- DB Solo : http://www.dbsolo.com/index.html(30 일 평가판)
- PostgresCompare : https://www.postgrescompare.com/(14 일 평가판, 스키마와 데이터 비교)
답변
pg_dump
두 데이터베이스에서 사용 하고 파일을 비교해 보십시오 .
답변
답변
많은 도구를 평가하고 다음과 같은 해결책을 찾았습니다.
스키마 비교 :
가장 흥미로운 것은 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 입니다. 불행히도 무료 평가판은 하루 후에 만료됩니다.