Нужна помощь SSIS - Как получить ID от места назначения - PullRequest
0 голосов
/ 27 февраля 2019

Я новичок в SSIS.В настоящее время работаю над переносом данных из SQL в Oracle.У нас есть таблицы в обеих базах данных (с разными типами данных).Скажем, один мастер (роли) и один ребенок (сотрудник).Я перевожу таблицу Employee из SQL в Oracle.RoleID - это FK в таблице Employee.

Поскольку тип данных назначения и RoleIds отличаются от Source, мне нужно получить «RoleName» из таблицы сотрудников Source, соединиться с таблицей ролей в Destination и получить соответствующие идентификаторы.

Источник: Таблица сотрудников -> RoleId (тип данных GUID)

Назначение Таблица сотрудников -> RoleId (тип данных Int)

Я пытался использовать FuzzyLookup и Lookup, я не получаю информацию о целевом диспетчере подключений там.Любая другая идея, как этого добиться?

Заранее спасибо.

Структура таблицы:

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Используйте обычное преобразование «Уточняющий запрос»

Зачем использовать преобразование «Нечеткий уточняющий запрос», в то время как вы можете добиться этого с помощью обычного преобразования «Уточняющий запрос».

Преобразование «Нечеткий уточняющий запрос» имеет ограничение, поскольку ссылка должна быть базой данных SQL Server из документации преобразования «Нечеткий поиск» :

Источник справочных данных долженбыть таблицей в базе данных SQL Server.

На основе документации преобразования Lookup :

Преобразование Lookup поддерживает следующих поставщиков баз данных для диспетчера соединений OLE DB:

  • SQL Server
  • Oracle
  • DB2

Подготовка данных

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

  1. Подготовка данных (спор) с использованием SQL
  2. Использование Производные столбцы для простых операций очистки
  3. Использование компонента скрипта для сложной логики очистки
  4. Использование Преобразование данных для соответствия типам данных
0 голосов
/ 27 февраля 2019

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

Если вы не можете сделать это и должны сделать все это в пакете служб SSIS, то вы можете сделать это, добавив еще один компонент Source в ваш поток данных, которыйполучает данные из таблицы ролей в Oracle и выполняет Merge Join к данным, поступающим с SQL Server, присоединяясь к RoleName, чтобы получить ID из таблицы Oracle в поток данных.Обратите внимание, что если вы сделаете это таким образом, вам придется ЗАКАЗАТЬ оба исходных компонента на ключе объединения слиянием (RoleName).

...