сравнить данные в 2 таблицах SQL - PullRequest
1 голос
/ 15 июня 2009

В рамках процесса регрессии данных и обеспечения качества мне нужно искать различия между двумя таблицами, которые в идеале должны быть почти идентичными. Я посмотрел на большое количество коммерческих продуктов и не могу найти тот, который удовлетворяет всем нашим требованиям:

  • Должно быть в состоянии очень эффективно сравнивать БОЛЬШИЕ таблицы (10 миллионов строк на 200 столбцов)

  • Должно работать на разных серверах БД и разных поставщиках БД (Oracle и DB2)

  • Должен иметь возможность сравнивать таблицы, имеющие разную структуру, игнорируя столбцы, которые не разделяются между двумя таблицами

  • Должен работать с предоставленным пользователем первичным ключом из нескольких столбцов - не может полагаться на ключ, определенный в БД

  • Должен работать на Linux / Solaris. Будет выполняться как часть полностью автоматизированного процесса, выполняемого в корпоративной среде.

  • Должен быть в состоянии работать без головы (без GUI)

  • Необходимо создать отформатированный отчет, в котором указаны различия в строках (строки только на одной стороне) и значения различий

  • Заказчик готов заплатить корпоративную цену за правильное решение. Другими словами, цена не объект.

Кто-нибудь когда-нибудь видел что-то подобное?

Ответы [ 3 ]

2 голосов
/ 15 июня 2009

Я бы хэшировал строки БД на основе ваших определенных критериев и затем использовал бы это. Если детали сравнения довольно статичны, вы можете сохранить хеш, либо в виде нового столбца в самой таблице, либо в отдельной выделенной таблице. Тогда соответствующий индекс позволит вам выполнить любые сравнения.

2 голосов
/ 15 июня 2009

Не лучшие решения, но для гибкости, мы реализовали это как набор perl-скриптов, которые извлекают данные и затем проводят сравнение файлов.

Большинство коммерческих баз данных имеют отличную утилиту массового копирования (bcp, sqlload и т. Д.), А Perl быстр со сравнением строк и для обработки больших файлов.

0 голосов
/ 15 июня 2009

Не знаю, связано ли это, посмотрите на «Отклонение» объектов от реляционной базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...