#database #ssis #copy #duplicates #rows
#База данных #ssis #Копировать #дубликаты #строки
Вопрос:
У меня есть DB1 и DB2. Я хочу экспортировать данные всех таблиц из DB1 в DB2. Некоторые таблицы в DB2 имеют строки, похожие на DB1. Это выдает ошибку независимо от того, какой метод я использую в SSIS из-за ограничения PK. Как я могу игнорировать строки, которые присутствуют в целевых таблицах «на лету», и продолжить копирование с другими. Мне нужно запустить процесс для всей базы данных сразу. У меня есть 100 таблиц, поэтому выполнение для каждой таблицы не сработает. Я пытался использовать управление задачами переноса объектов SQL Server в SSIS (BI), но это не дает мне возможности разобраться с моим случаем.
Любая помощь высоко ценится, и она не является срочной.
Ответ №1:
Для этого вы можете использовать поиск.
http://jahaines.blogspot.com/2009/09/ssis-only-inserting-rows-that-do-not.html
Редактировать: если вам нужно объединить данные из двух таблиц, затем объедините два источника данных с помощью компонента слияния, затем используйте поиск после таблицы слияния. Если у вас есть дубликаты в объединенных данных, то вы можете использовать компонент сортировки между слиянием и поиском и установить флажок, чтобы удалить дубликаты. Однако имейте в виду, что использование компонента сортировки является дорогостоящим с точки зрения использования ресурсов.
Другим способом достижения этой цели было бы поместить все данные из двух таблиц в одну промежуточную таблицу в принимающем окне SQL. Затем напишите сохраненную процедуру для вставки только новых строк в рабочую таблицу, наконец, сократите промежуточную таблицу. Я бы вызвал SP из потока управления в качестве задачи выполнения SQL.
Лично я бы использовал метод промежуточной таблицы, поскольку метод проб и ошибок показал, что для меня это проще и эффективнее всего. Не требуется дорогостоящих сортировок и поисков (поиск не стоит дорого), но работа на основе наборов в SP — это то, что любит делать движок SQL.
Комментарии:
1. Да, я думал об управлении поиском, но не смог найти способ скопировать все таблицы с помощью поиска за один запуск. Есть ли какой-либо доступный элемент управления, который позволяет объединить две базы данных с похожей схемой посредством поиска?