2012-05-30 2 views
4

У меня есть таблица и она имеет 500 строк. Я хочу получить только 10 строк, и я хочу вставить их в другую таблицу, используя только поток управления. Через задачу потока данных мы можем использовать источник OLEDB и пункт назначения OLEDB. Но я хочу получить результат таким образом, что с помощью выполнения sql-задачи и для каждого цикла. Можно ли так поступать? Моя идея состоит в том, чтобы получить набор из десяти записей и, используя цикл foreach, перебирать каждую строку и вставлять в таблицу с помощью выполнения sql-задачи. Таблица назначения должна создаваться «на лету». Я пытался с некоторым подходом, но не двигался. Найдите файл изображения. enter image description hereКак вставить извлеченные строки в другую таблицу с помощью ssis

+0

Вы хотите получить только 10 строк из 500 строк и вставить в другую созданную таблицу на лету ? –

+0

Точно Mr.Sudhakar – Searcher

+0

Таблица назначения находится на сервере SQL или через OLEDB? –

ответ

5

Пример взят из Борея

Создания переменных (в переменной коллекции), которые представляют столбцы в таблице, которая у создаст во время выполнения Примера: -

 Customer_ID as string 
     Order_Id as int 

Тогда и нужно создать Execute SQL Task и написать ниже запрос для выбора первых 10 строк

Select top 10* from orders 

Использование FullResultSet и в результате Конфигурация Set магазин строки таблицы в VARIABLENAME: - Пользователь :: Результат ResultName: 0

Капля один Execute SQL Task и создать таблицу на лету

IF OBJECT_ID('myOrders') IS not NULL 
drop table myOrders 

Create table myOrders 
(OrderID int, 
    CustomerID varchar(50) 
) 

объединить 2 потоков от Execute задачи SQL и подключения это к циклу Foreach

Перетащите петлю foreach. В качестве типа перечислителя используйте перечислитель ADO ADAM для переадресации В конфигурации счетчика выберите пользователя :: переменная результата, в которой хранятся первые 10 строк из задачи выполнения sql и выберите переключатель " Строки в первой таблице " В varia BLE отображения, карта переменных столбцов которой и создали на первом этапе, а индекс будет 0 для первого столбца и 1 для 2-го столбца enter image description here

Перетащите выполнить SQL задачи внутри цикла Еогеаспа и писать ниже запрос:

Insert into myOrders(OrderID,CustomerID) 
    values 
    (?,?) 

Карта параметров с использованием конфигурации отображения параметров в выполнение SQL Task

VariableName : OrderID Direction : Input DataType=Long ParamterName=0 
    VariableName : CustomerID Direction : Input DataType=varchar ParamterName=1 
+0

Я пробовал размещать скриншоты, но пока не получилось правильно отображаться – praveen

+0

+1 хороший ответ. Я добавил еще один пример с почти таким же процессом, но больше объяснений на некоторых этапах – Diego

2

Я надеюсь, что вы делаете это на «режим изучения,». Нет причин, почему это нужно делать при потоке управления потоком данных.

В любом случае, ваш экран печати верен, я бы просто добавил еще одну задачу выполнения sql в начале, чтобы создать таблицу адресатов.

Тогда ваша задача выполнения sql должна иметь запрос, чтобы привести 10 строк, которые вы хотите, его результирующий набор должен быть установлен в «Полный набор результатов», а на вкладке результатов вы должны сопоставить результирующий набор с переменной, подобной этой :

enter image description here

и настроить ваш контейнер петли Еогеасп так:

enter image description here enter image description here

на каждой петле из foreach у вас будет доступ к значениям переменных, тогда вы можете использовать другую задачу sql execute для вставки затем в новую расфасованную таблицу

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