2015-10-26 5 views
-2

У меня есть 2 таблицы Т1 и Т2, как это:SSIS - Вызов второй таблицы на основе первой таблицы

Create table #T1(ID int) 
Insert into #T1 values(10),(20),(30) 

Create table #T2(Val varchar(10)) 
Insert into #T2 values ('A'),('B'),('C'),('D') 

output: 
----------- 
Table1 - ID 
----------- 
10 
20 
30 
---------- 
Table2 - Val 
---------- 
A 
B 
C 
D 

Я хочу сохранить выход в Флэт назначения файла таким образом, что она выглядит как

10,A,B,C,D 20,A,B,C,D 30,A,B,C,D. 

Я знаю, как использовать соединения, но не хочу их использовать.

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

Поэтапное решение будет оценено по достоинству. Это должно быть как для каждой записи T1, цикл будет работать для T2.

+0

'SELECT * FROM T1, T2' – wiretext

+0

nope, то есть создание перекрестного соединения между t1 и t2..этого я не хочу. Это должно быть как для каждой записи T1, цикл будет работать для T2. –

+0

Вы можете сохранить значения из T1 в переменной объекта (используя задачу Execute SQL), а затем использовать цикл For Each для обработки каждого вхождения этой переменной. Этот цикл For Each будет запрашивать T2 и комбинировать T1 и T2 для вывода вывода. – MiguelH

ответ

1

Control flow/data flow

  1. Создание переменных для объекта и элемента
  2. Создать SQL заявление для извлечения данных из T1 и хранить в переменной объекта. Установите ResultSet в «Полный набор результатов» и сопоставьте имя результирующего SetResult (3)
  3. Добавить контейнер цикла Foreach с использованием перечислителя ADO Foreach Используйте переменную Object в качестве исходной переменной и сопоставьте ее с элементом (5).
  4. Добавить поток данных.
    В потоке данных назначения таблицу T2 в качестве источника DB
  5. Добавить производный столбец и добавить переменную элемента в качестве дополнительного столбца
  6. Карта производный столбец и Т2 данные на ваш выходной FlatFile
+0

Большое спасибо @MiguelH Мне не хватало задачи сценария .... пожалуйста, не могли бы вы рассказать мне, почему мы должны использовать задачу скрипта здесь? –

+0

Привет @PrabhatG. Я включил задачу скрипта просто для подтверждения того, что цикл for..each предоставил правильные данные. Это ни на что не влияет. Для полноты это имеет 'varTblitem' как' ReadOnly Variable' и имеет следующую строку сценария в логике 'Main':' MsgBox (Dts.Variables («varTblitem»). Value.ToString) '. Я отключу этот элемент сценария, как только увижу, что все работает так, как должно! – MiguelH

Смежные вопросы