Как я могу использовать SSIS для сопоставления текстового значения на месте (в исходной БД) с таблицей FK (в базе данных dest)? - PullRequest
0 голосов
/ 24 августа 2011

У меня есть две базы данных. Мой источник выглядит так:

FirstTable
------
TestingData
-----------
   Test
  Values
    go
   here
    go
   Test

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

FirstTable
------
TestingDataId
----------------
       1
       2
       3
       4
       3
       4

TestingDataEnum
------
TestingDataId      TestingDataValue
-------------      ----------------
     1                 Test
     2                Values
     3                  go
     4                 here

TestingDataId в таблице. TestingDataEnum является первичным ключом, но не идентификатором.

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

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

Кто-нибудь знает хороший способ сделать это с помощью SSIS?

1 Ответ

2 голосов
/ 24 августа 2011

Похоже, вам нужно использовать преобразование Lookup, чтобы найти строку и вставить ее в поток данных. Вы также можете использовать Merge для достижения того же результата, но прочитайте эту статью наркомана служб SSIS: http://consultingblogs.emc.com/jamiethomson/archive/2005/10/21/2289.aspx

В качестве альтернативы, я бы рекомендовал выполнить поиск в SQL, предоставляющем данные (при условии, что исходные данные также поступают из таблицы базы данных).

РЕДАКТИРОВАТЬ: Я пропустил основной вопрос вашего вопроса с моим первоначальным ответом, извините, поэтому я немного изменю его. Я думал, что вы только делаете поиск, чтобы изменить один тип данных на другой, но то же самое можно использовать, чтобы выяснить, не находится ли значение в вашей таблице.

Если поиск не удается, вам нужно обработать ошибку и выполнить insert, после чего вы сможете использовать новое значение int в потоке данных.

Или это тот метод взлома, о котором вы думали? :)

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