Проблема слияния базы данных с дублирующимися строками - PullRequest
0 голосов
/ 10 мая 2011

У меня есть DB1 и DB2.Я хочу экспортировать все данные таблиц из DB1 в DB2.Некоторые таблицы в DB2 имеют строки, аналогичные DB1.Это выдает ошибку независимо от того, какой метод я использую в SSIS из-за ограничения PK.Как я могу игнорировать строки, которые присутствуют в таблицах назначения на лету и продолжить копирование с другими.Мне нужно запустить процесс для всей БД одновременно.У меня есть сотни таблиц, так что выполнение для каждой таблицы не будет работать.Я пытался использовать управление задачами «Передача объектов SQL Server» в SSIS (BI), но это не дает мне возможности справиться с моим делом.

Любая помощь высоко ценится и не требует срочных действий.

1 Ответ

0 голосов
/ 11 мая 2011

Вы можете использовать поиск для этого.

http://jahaines.blogspot.com/2009/09/ssis-only-inserting-rows-that-do-not.html

Редактировать: если вам нужно объединить данные из двух таблиц, затем объединить два источника данных с помощью компонента слияния, а затем использовать поиск после таблицы слияния. Если у вас есть дубликаты в объединенных данных, вы можете использовать компонент сортировки между слиянием и поиском и установить флажок, чтобы удалить дубликаты. Однако следует помнить, что использование компонента сортировки является дорогостоящим с точки зрения использования ресурсов.

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

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

...