SSIS выполняет сопоставление параметров задачи sql - PullRequest
0 голосов
/ 26 мая 2011

Я пытаюсь выполнить сценарий sql, используя задачу в SSIS.

Мой сценарий просто вставляет в таблицу несколько пар значений nambe.Например -

вставить в mytable (имя, значение) значения (?, 'Value1'), (?, 'Value2')

Теперь я хочу отобразить переменную, определенную в SSISбыть сопоставлены с параметрами в заявлении выше.Я попытался определить скалярную переменную, но я думаю, что задача sql не нравится.Да, и все параметры имени в операторе вставки преобразуются в одну переменную.

Например, я хочу вставить в mytable (имя, значение) значения ('name1', 'value1'), ('name1','value2')

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

Имя переменной - Пользователь :: Направление имени - Тип входных данных -LONG Имя параметра - 0 Размер параметра - -1

Имя переменной - Пользователь :: Направление имени - Тип входных данных - LONG Имя параметра - 1 Размер параметра - -1

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

Есть ли простой (-ier)способ сделать это?

1 Ответ

2 голосов
/ 01 июня 2011

Самый простой (и наиболее расширяемый) способ - использовать задачу потока данных вместо задачи выполнения SQL.

  1. Добавить задачу потока данных; Я предполагаю, что у вас есть все переменные, заполненные правильными параметрами, и что вы знаете, как передать значения в них.
  2. Создайте фиктивную строку со столбцами, которые вам нужно будет вставить, поэтому используйте в качестве источника все, что вам больше нравится (в этом примере я использовал соединение с oledb). Один хороший совет - определить типы данных для каждого столбца в источнике, так как они понадобятся вам в таблице назначения. Это позволит выровнять метаданные потока данных с данными таблицы вставки ( Снимок экрана # 1 ).
  3. Затем добавьте многоадресный компонент в поток данных.
  4. Для первого параметра / значения добавьте производный компонент столбца, присвойте ему имя и продолжайте заменять содержимое ваших параметров вашими переменными.
  5. Для каждого дополнительного параметра / значения, которое необходимо добавить; скопируйте ранее созданный производный компонент столбца, добавьте одну дополнительную ветвь из компонента многоадресной рассылки и приступите к замене параметра / значения столбца по необходимости.
  6. Добавить объединение всех и объединить все потоки
  7. Вставить в таблицу
  8. Вуаля! ( Снимок экрана # 2 )

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

Хорошего дня!

Francisco.

PS: я подготовил еще пару скриншотов ... но stackoverflow решил, что я слишком новичок на сайте, чтобы публиковать вещи с изображениями или более чем двумя ссылками (!) О, хорошо ..

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