Обновление таблицы с использованием служб SSIS - PullRequest
6 голосов
/ 19 мая 2009

Я пытаюсь обновить поле в таблице данными из другой таблицы на основе общего ключа. Если бы это был прямой 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 в не-Unicode. Но как мне обновить на основе совпадения? Я пытался с назначением, используя команду SQL в качестве режима доступа к данным, но, похоже, нет исходной таблицы. Если я просто сопоставляю поле, подлежащее обновлению, как оно ограничивает его на основании совпадения полей?

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

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

Ответы [ 4 ]

8 голосов
/ 19 мая 2009

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

2 голосов
/ 08 июня 2009

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

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]
0 голосов
/ 14 апреля 2016

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

0 голосов
/ 10 июня 2010

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

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

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