2010-10-06 55 views
0

我有一個可變@csv持有逗號分隔值,例如: -a -a,B -a,B,C如何在SSIS 2008中創建動態IN查詢?

我需要通過它在查詢在我的OLE DB源在一個數據流創建查詢,例如:

SELECT COUNT(1)從表WHERE COL1 IN @csv

所以如果@ CSV = 「A,b」,那麼在內部應該解析成

SELECT COUNT(1)FROM table WHERE col1 IN'a','b'

這怎麼能在SSIS 2008中最好地實現?我可以避免腳本組件創建動態查詢並將其存儲在變量中嗎?

回答

0

如何在SSIS 2008中實現最佳效果?我是否可以避免腳本部件 創建動態查詢並將 存儲在變量中?

最簡單/最好的方式仍然是一個腳本組件。

否則你:

  1. 使用CSV作爲數據源,並選擇你的結果
  2. 使用和「添加欄」工具添加您的SQL查詢的其餘部分周圍的結果
  3. 店結果到一個變量
  4. 然後用的OLE DB數據源與「查詢從變量」
0

您可以創建一個variab文件來存儲查詢和使用表達式,像構成它的值:

<code>enter image description here</code>

變量的列表:

enter image description here

選項1:在使用OLE DB的情況下,選擇SQL Command from variable並綁定變量@sqlQuery: enter image description here

選項2:在使用ADO.NET的情況下,轉到數據流任務的性能和擴大Expressions和結合ADO.NET源>的SqlCommand與可變@sqlQuery +確保ADO.NET Source > Data access modeSQL Commandenter image description here enter image description here

方案3:在使用Execute SQL Task,展開Expressions和SqlStatementSource與可變@sqlQuery結合+確保的情況下SQL Source TypeDirect Inputenter image description here