2012-05-30 56 views
4

我有一個表,它有500行。我想檢索只有10行,我想只使用控制流插入到另一個表。通過數據流任務我們可以使用OLEDB源和OLEDB目標。但我想要的結果是通過使用執行sql任務和每個循環。這樣做有可能嗎?我的想法是,獲得10條記錄的集合,並通過使用foreach循環遍歷每行並使用execute sql任務插入到表中。目的地表格需要隨時創建。我嘗試了一些方法,但沒有走向。請找到圖像文件。從羅斯文采取enter image description here如何使用ssis將檢索到的行插入到另一個表中

+0

你只需要從500行中獲得10行並插入到另一個飛行創建表? –

+0

正是Mr.Sudhakar – Searcher

+0

目標表是在SQL服務器還是通過OLEDB? –

回答

5

創建變量(變量集合中的),其代表在表中的列其中U會在運行時 實施例創建: -

 Customer_ID as string 
     Order_Id as int 

然後u需要創建執行SQL任務並編寫以下查詢以選擇前10行

Select top 10* from orders 

使用FullResultSet並在結果中整套配置存放在VARIABLENAME錶行: - 用戶::結果ResultName:0

降一個執行SQL任務和動態創建一個表

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

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

結合2流從執行SQL任務和連接它foreach循環

將foreach循環。在收集使用枚舉類型FOREACH ADO枚舉 在枚舉配置選擇用戶::結果變量,其存儲從執行SQL任務和選擇的單選按鈕「的前10行第一個表中的行「 在變量中BLE映射,映射其中U在第一步驟中已經創建了列變量以及用於第二列的索引爲第一列將0和1 enter image description here

將一個執行foreach循環內部SQL任務和寫入以下查詢:

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

使用參數映射配置在執行SQL任務

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循環容器這樣的foreach你將有權訪問變量的值,那麼你可以使用另一個執行sql任務,然後插入新的附加表

相關問題