Сравните две похожие, но не идентичные таблицы данных - PullRequest
0 голосов
/ 18 июля 2011

У меня есть две таблицы данных, которые имеют общий столбец первичного ключа, но в остальном разные структуры, так как они созданы из разных таблиц. Я хотел бы проверить, какие строки отсутствуют в таблице данных B по сравнению с A, с целью добавления отсутствующих строк в базу данных.

Я смотрел на такие вопросы, как этот , которые дают хорошие ответы, но таблицы данных обычно предполагаются одинаковыми.

Так как я хочу получить список новых строк для вставки, есть ли способ сделать это без итерации по строкам и проверки PK? Если я не ошибаюсь, Merge сохранит старые строки, которые я не хочу повторно отправлять в базу данных.

В обеих таблицах будет всего несколько десятков строк, максимум пару сотен. Будет ли вычислительный эффект от построчно в любом случае незначительным?

edit: две исходные таблицы находятся на разных базах данных / серверах, поэтому я не могу легко сделать сравнение в SQL. В любом случае, я бы предпочел, чтобы приложение-потребитель делало это, так как я могу добавить еще немного обработки строк до того, как я закончу.

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Надеюсь, я правильно понял ваши потребности, но как насчет использования Linq?Загрузите ключи ваших 2 таблиц в 2 IEnumerable<keytype> объекты, например (при условии, что ваши ключи имеют тип int)

IEnumerable<int> keys1, keys2;
// code to load the keys into these collections
// to find the keys in keys1 that are missing from keys2:
var missingKeys = keys1.Where(k1 => !keys2.Any(k2 => k2 == k1)); 

HTH

0 голосов
/ 18 июля 2011

Разве это не проще / быстрее сделать это в SQL, например:

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