Обновить таблицу с помощью служб SSIS

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

Update EHSIT
set e.IDMSObjID = s.IDMSObjID
from EHSIT e, EHSIDMS s
where e.SITENUM = s.SITE_CODE

однако две таблицы не находятся в одной базе данных, поэтому я пытаюсь использовать SSIS для обновления. О, и sitenum/site_code-это varchar в одном и nvarchar в другом, поэтому мне придется сделать преобразование данных, чтобы они совпали.

Как это сделать?
У меня есть объект потока данных, с источник как EHSIDMS и назначение как EHSIT. У меня есть преобразование данных, чтобы преобразовать unicode в non-unicode. Но как я могу обновить на основе матча? Я пробовал с назначением, используя команду SQL в качестве режима доступа к данным, но, похоже, у него нет исходной таблицы. Если я просто сопоставляю поле для обновления, как оно ограничивает его на основе сопоставления полей?

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

разве не должна быть задача обновления данных или что-то еще? Это одна из задач преобразования потока данных, и я просто не понимаю, что это такое?

4 ответов


Вы можете использовать SQLCommand (с параметрами), но вы будете эффективно писать UPDATE для каждой строки. Я нашел, что лучше написать промежуточную таблицу на стороне назначения (все данные с удаленной стороны или данные, определенные SSIS для изменения) и использовать один SQL UPDATE для выполнения обновления.


вы всегда можете использовать полное имя базы данных.

UPDATE server1.databasename.EHSIT
SET E.IDMSOBJID = S.IDMSOBJID
FROM server1.databasename.EHSIT E, server2.databasename.EHSIDMS S
WHERE E.SITENUM = S.SITE_CODE



[serverpath].[database].[databaseobject]

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

Devtron, я пробовал это и получаю ошибки о пути сервера,в нем много/. Мне также сказали, что это очень свысока, особенно если это операция, которая происходит много.


Я бы использовал преобразование поиска Нет необходимости в постановке-нет необходимости писать SQL-код - это то, как SSIS должен был быть!