Можно ли сравнить две базы данных с одинаковой структурой? Допустим, у меня есть две базы данных DB1 и DB2, и я хочу проверить, есть ли между ними разница в данных.
postgresql
schema-compare
сеннин
источник
источник
Ответы:
Есть несколько инструментов:
(обратите внимание, что большинство этих инструментов могут сравнивать только структуру, но не данные)
Бесплатные:
Коммерческий:
источник
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)
в
Поэтому было отказано в использовании
( проблема ) Persyas работал нормально, пока я не добавил дополнительную схему, и она начинает бросать следующее:
Итак, я обнаружил, что PgCodeKeeper отлично работает и жив (вы можете проверить выпуски). Я использую следующую команду:
Сравнение данных: я пытался использовать Liquebase, но это просто не работает, вы можете увидеть шаги, которые я пробовал, в моем вопросе без ответа о разнице данных двух баз данных с Liquebase
Итак, я нашел еще один проект SQL Workbench / J. Он отлично работает и генерирует реальный diff в sql. Я использую следующую команду:
Оба инструмента поддерживают фильтрацию объектов. Это действительно удобно.
Миграции
И, наконец, я использую Liquebase только для отслеживания миграции / версий.
источник
Я работаю над комплексным инструментом сравнения для Postgres. Пока он находится в бета-версии, он будет бесплатным.
PostgresCompare
Изначально это просто сравнение схем (DDL), но мы, вероятно, также расширим его до данных. Я считаю, что это инструмент, который требуется многим магазинам, чтобы перейти от их текущей СУБД, не меняя при этом то, как работают их среды разработки, операции и т. Д.
источник
Лучший инструмент, который я когда-либо видел https://pythonhosted.org/Pyrseas/
Получить дамп из базы данных A dbtoyaml ...
Создать миграцию из A => B yamltodb ... [файл, созданный на шаге 1]
источник
Я также ищу инструмент для сравнения данных в базах данных (в частности, меня интересовало сравнение Redshift DB). Пока лучшее, что я нашел, - это https://www.dbbest.com/products/database-compare-suite/#close . К сожалению, срок действия бесплатной пробной версии истекает через день.
источник
Я создал инструмент для сравнения двух живых баз данных PostgreSQL (не дампов), табличных данных и последовательностей. Довольно рано, но я добился того, чего хотел, может быть, это поможет и вам.
https://github.com/dmarkey/pgdatadiff
источник
На мой взгляд, Dbforge - самый мощный инструмент для сравнения данных в postgresql. Это продукт компании Devart. Вы можете скачать здесь .
источник