Таблицы базы данных Sql Server 2005 - сравнение строк столбец за столбцом - PullRequest
1 голос
/ 22 марта 2010

Сценарий

У меня есть две таблицы баз данных точно такой же структуры. Разница между этими таблицами состоит в том, что одна содержит данные, заполненные одним приложением, а другая - другим приложением. Каждое приложение пытается получить один и тот же результат, но использует два разных метода реализации.

Предложенная идея

То, что я хочу сделать, - это запустить оба приложения, которые примерно произведут 35000 строк, содержащих по 10 столбцов в каждом. Таким образом, в целом, 70000 строк данных, я затем хочу сравнить каждую строку данных, COLUMN BY COLUMN, чтобы проверить одинаковые значения или нет.

Текущие мысли

Поскольку существует так много данных для сравнения, я считаю, что лучший способ сделать это - написать приложение, предпочтительно на C # (но при необходимости T-sql), для сравнения каждой строки столбца данных. по столбцу и запишите все неудачные сравнения в текстовый файл журнала.

Вопрос

Может ли кто-нибудь предложить эффективный способ сравнения столбцов и столбцов для данных на 70000 строк? Я борюсь за идеи о том, как решить эту проблему.

Дополнительная информация

Оба приложения написаны на C # .Net 3.5. База данных работает на Sql Server 2005.

Помощь с благодарностью.

Ответы [ 3 ]

2 голосов
/ 22 марта 2010

Уже существует продукт от Red Gate, который называется SQL Data Compare , который может показать различия между двумя таблицами в базе данных SQL Server. Это сэкономит вам некоторую работу и будет приятно визуально отображать результаты. Это не бесплатно, но вы можете попробовать пробную версию, прежде чем купить.

Я использовал этот продукт раньше с хорошими результатами.

0 голосов
/ 22 марта 2010

Я не согласен с вашим утверждением:

Поскольку существует так много данных для сравнить, я чувствую, что лучший способ что для этого было бы написать приложение, предпочтительно в C #

SQL Server предназначен для эффективного выполнения операций над множествами данных, а C # - нет. Вы можете создать запрос для сравнения таблиц по всем столбцам и записать различия в таблицу результатов; взгляните на оператор EXCEPT.

Вы не говорите, как бы вы могли разрешить какие-либо различия, потребует ли ручной проверки различий или вы собираетесь делать это автоматически?

На самом деле, если вы собираетесь выполнять проверку только вручную, существует ряд инструментов для такого рода сравнения, вот примерная цена: http://www.datanamic.com/datadiff/index.html

0 голосов
/ 22 марта 2010

Вы пробовали запрос MINUS ? Это вернет все строки из первой таблицы, которых нет во второй или наоборот ...

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