PostgreSQL에서 두 데이터베이스 간의 데이터를 비교하는 방법은 무엇입니까?
동일한 구조의 두 데이터베이스를 비교할 수 있습니까?제가 DB1과 DB2 두 개의 데이터베이스를 가지고 있는데 그들 사이에 데이터 차이가 있는지 확인하고 싶습니다.
몇 가지 툴이 있습니다.
(이러한 도구의 대부분은 구조만 비교할 수 있지만 데이터는 비교할 수 없습니다.)
무료:
- pgquarrel: http://eulerto.github.io/pgquarrel (diff 형식)
- apgdiff http://apgdiff.com/ (diff)
- Liquibase(DBMS 간):http://www.liquibase.org (표준 diff)
- pgAdmin https://www.pgadmin.org (pgAdmin4에서는 서로 다른 점이 있음)
- WbDataDiff(DBMS 간):http://www.sql-workbench.net/manual/compare-commands.html#command-data-diff (데이터 diff)
- WbSchemaDiff(DBMS 간):http://www.sql-workbench.net/manual/compare-commands.html
- Migra https://migra.djrobstep.com/ (표준 diff)
광고:
- DB 비교기: http://www.sqlmanager.net/en/products/postgresql/dbcomparer
- 아쿠아 데이터 스튜디오: 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두 데이터베이스 모두에 저장하고 파일을 분산시킵니다.
다른 무료 앱(구조만 비교할 수 있고 데이터는 비교할 수 없음):
DBeaver - 서로 비교할 데이터베이스, 테이블 등을 선택할 수 있습니다.
저는 Postgres에 대한 포괄적인 비교 도구를 연구하고 있습니다.베타 기간 동안 무료로 제공됩니다.
처음에는 스키마(DDL) 비교에 불과하지만 데이터로도 확장할 것입니다.저는 이것이 많은 상점들이 개발 환경, 운영 등을 변경하지 않고도 현재의 RDBMS에서 전환하기 위해 필요한 도구라고 생각합니다.
많은 툴을 평가한 결과 다음과 같은 솔루션을 발견했습니다.
스키마 비교:
가장 흥미로운 것은 Liquibase, Persyas 및 PgCodeKeeper였습니다.
(이슈) Liqubase 변환:
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
안으로
BIGSERIAL
그래서 사용하기가 거부되었습니다.
(문제) 제가 스키마를 추가하고 다음과 같은 내용을 쓰기 시작할 때까지 페르시아는 잘 작동했습니다.
pyrseas_1 | TypeError: 'NoneType' object is not iterable
그래서 저는 PgCodeKeper가 완벽하게 작동하고 활성화되어 있다는 것을 발견했습니다(릴리스를 확인할 수 있습니다).다음 명령을 사용합니다.
./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
데이터 비교:저는 Liqubase를 사용하려고 시도했지만 작동하지 않습니다. Liqubase를 사용하는 두 데이터베이스의 데이터 차이에 대한 답이 없는 질문에서 제가 시도한 단계를 볼 수 있습니다.
그래서 저는 다른 프로젝트 SQL Workbench/J를 찾았습니다. 그것은 정말 잘 작동하고 sql에서 정말 큰 차이를 만듭니다.다음 명령을 사용합니다.
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 ;'"
두 도구 모두 개체 필터링을 지원합니다.그것은 정말 편리합니다.
마이그레이션
마지막으로 마이그레이션/버전 추적에만 Liqubase를 사용합니다.
내가 본 최고의 도구 https://pythonhosted.org/Pyrseas/
데이터베이스 Adbtoyaml에서 덤프 가져오기...
A에서 마이그레이션 생성 => Bamltodb...[1단계에서 생성된 파일]
라이브 Postgre 2개를 비교할 수 있는 도구를 만들었습니다.SQL 데이터베이스(덤프가 아님), 테이블 데이터 및 시퀀스.꽤 이른 시기지만 제가 원하는 것을 달성했습니다. 아마도 당신에게도 도움이 될 수 있을 것입니다.
https://github.com/dmarkey/pgdatadiff
pgtricks 도구에는 pg_dump_splitsort라는 명령이 있습니다.
덤프에서 실행할 수 있습니다.
예:
pg_dump > pre-changes.sql
mkdir pre-changes
cd pre-changes
pg_dump_splitsort ../pre-changes.sql
now do some changes to your DB
pg_dump > post-changes.sql
mkdir post-changes
cd post-changes
pg_dump_splitsort ../post-changes.sql
cd ..
meld pre-changes post-changes
데이터베이스의 데이터를 비교하는 도구도 찾고 있습니다(특히 Redshift DB를 비교하는 데 관심이 있었습니다)지금까지 찾은 것 중 최고는 https://www.dbbest.com/products/database-compare-suite/ #close입니다.안타깝게도 무료 평가판은 하루 후에 만료됩니다.
제 생각에 Dforge는 postgresql에서 데이터를 비교하는 가장 강력한 도구입니다.데바트 사의 제품입니다.여기서 다운로드할 수 있습니다.
간단한 데이터베이스(트리거, 저장된 프로시저 및 중첩 테이블 없음)에는 https://github.com/covrom/goerd 를 사용합니다.
JetBrains DataGrip에 대한 라이센스를 이미 보유하고 있다면 해당 도구에 내장된 Compare 기능을 확인해 볼 가치가 있습니다. 이 기능에 대한 공급업체 설명서를 참조하십시오.
한 가지 좋은 기능은 비교하려는 두 테이블에서 임의의 행과 열을 선택한 다음 출력 창에서 결과를 비교할 수 있다는 것입니다.따라서 각 데이터베이스에서 서로 다른 타당한 이유가 있을 수 있는 ID 열과 같은 항목을 무시할 수 있습니다.
다른 GUI diff 도구가 있으며 현재 Windows 전용입니다. KS DB Merge Tools for PostgreSQL. 오픈 소스는 아니지만 꽤 기능적인 무료 버전을 사용할 수 있습니다. 스키마, 디프 및 병합 테이블 데이터와 일부 프로그래밍 개체를 비교할 수 있습니다.
저는 그 도구의 저자입니다.
언급URL : https://stackoverflow.com/questions/4804779/how-to-compare-data-between-two-databases-in-postgresql
'programing' 카테고리의 다른 글
| 응용프로그램을 제대로 종료하는 방법 (0) | 2023.05.20 |
|---|---|
| 개발 및 프로덕션 환경에서 서로 다른 Web.config 사용 (0) | 2023.05.20 |
| 환경이란 무엇입니까?Fail Fast? (0) | 2023.05.20 |
| 마크다운에서 bash/shell 명령을 강조 표시하는 방법은 무엇입니까? (0) | 2023.05.20 |
| Mac에서 python3를 내 기본 python으로 만들기 (0) | 2023.05.20 |


