Обновить таблицу с помощью служб 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 должен был быть!