Мы переносим нашу базу данных в новую схему, но хотим убедиться, что данные были перемещены правильно.
Традиционные инструменты сравнения данных могут сравнивать две базы данных на предмет различий, если схемы совпадают. В нашем случае произошли изменения в дизайне таблиц, но все данные из старой схемы были в новой, их просто немного переместили, и мне нужно убедиться, что это правильно. У нас десятки миллионов строк, поэтому ручная проверка невозможна.
Есть ли инструменты, которые могли бы помочь в этом типе сравнения?
Если нет, то есть ли какие-нибудь библиотеки / фреймворки, которые могли бы помочь начать разработку собственного решения?
Я рад использовать решение для конкретной базы данных, если это необходимо, в данном случае для SQL Server 2008.
Мой солутон: я сравниваю два набора данных, создавая VIEW
каждую таблицу в старой базе данных с теми же полями, что и в новой таблице базы данных.
Затем я сравниваю данные, используя методику, описанную здесь: Самый короткий, быстрый и простой способ сравнения двух таблиц в SQL Server: UNION!
Мне повезло в этой миграции, так как общая структура таблицы похожа на старую базу данных, поля перемещены из одной таблицы в другую, удалены или добавлены. В случае отброшенных и добавленных сравнивать нечего, для полей, которые были перемещены или объединены, я делаю вычисления в представлении, чтобы предоставить правильную информацию для сравнения.
В UNION
сравнении показывает мне только строки с различиями, так как только данные верны , я получаю пустой результирующий набор.
Ответы:
Это не невозможно сравнить две разные схемы, это расчет того, насколько вы уверены в результате. Я по сути заимствовал из методов банковской выверки
Важное замечание: Это согласование не о том, чтобы убедиться, что место назначения точно соответствует источнику в контексте данных (есть причина, по которой вы переходите на новую систему), но вам нужно объяснить любые расхождения!
Основа:
Я обычно делю сравнение на несколько методов (в частности, для детальных метрик):
Техники:
Независимо от того, какой метод я использовал для создания того, что будет сравниваться, я получаю набор файлов / views / dbs, в которых содержатся сопоставимые данные источника и назначения, затем в зависимости от носителя я могу использовать один из общедоступных инструментов. сравнить их. Мои собственные предпочтения:
Сравнение файлов
Создайте две разные папки для SourceDB и DestinationDB (отметка время / версия, чтобы я знал, когда я выполнял сверку) и выгрузите выходные данные моих метрик в файлы с соответствующим именем, а затем используйте инструмент сравнения (например, CSDiff ) для выявления различий
Сравнение Excel.
В частности, при работе с отчетами управления я создам набор книг Excel для сравнения отчетов (по сути, используя VLookups и сравнивая итоги).
Сравнение данных
Вместо того, чтобы выводить данные сверки в файлы или отчеты, выведите их в отдельные БД, а затем используйте что-то вроде Redgate SQL Data Compare для сравнения БД.
Другие инструменты:
Не пробовал ничего из этого, но быстрый поиск в Google по «Инструментам согласования данных» дает:
Есть и другие, но это были те, которые выглядели разумно
источник
Если вы хотите сравнить данные в двух разных проектах баз данных, вам придется написать SQL-код, написанный вручную, для сравнения данных.
Не существует библиотеки фреймворков для проверки данных, одинаковых в двух разнородных базах данных.
Только вы знаете, что вы изменили или изменили
источник
Вам будет невозможно сравнивать разные схемы. Чтобы решить вашу проблему, я бы выяснил, какие данные вам нужно сравнить. Затем я бы создал представление на каждом сервере, которое будет извлекать данные, которые я хотел сравнить (с учетом типов данных и тому подобное).
Когда оба представления совпадают, я бы использовал сторонний инструмент, такой как Red Gate Data Compare, чтобы увидеть, какие строки отличаются.
Звучит как боль. Удачи!
источник
Пару лет назад я написал инструмент для этого - сравнение данных между двумя базами данных. С тех пор я преобразовал его в коммерческое программное обеспечение и опубликовал на
www.sql-server-tool.com
Программа, названная SCT для «средства сравнения SQL Server» (я никогда не умела называть вещи :), имеет множество опций тонкой настройки, таких как: игнорирование выбранных столбцов или указание метода сравнения (запись за записью или первичный ключ / сравнение индекса). Сравнительные «сессии» могут быть сохранены и воспроизведены позже без необходимости повторного ввода параметров. Параметр командной строки можно использовать для полной автоматизации сравнений.
Для десятков миллионов строк это может быть немного медленным - в этом случае я бы рекомендовал начать с меньшего подмножества данных - скажем, сравнить только первые 1000 строк - и посмотреть, нужна ли какая-либо тонкая настройка процесса.
Дариуш Дзевиалтовски-Гинтовт
источник