2017-04-19 113 views
2

好日子所有,SSIS條件拆分基於列的值

我有哪裏我拉數據從SQL即

select invno , date_received from sales 

我想要做的就是拆分文件分成多個文件,該怎麼選擇查詢使用條件分割。 我不知道如何設置我試過如下 enter image description here

的條件,但它只是會創建一個文件,我如何創建一個基於列值的多個文件,如果我不知道該列的值會是?

此外,我想指定列的值,即INVNO到文件名以及防止文件

+2

您嘗試拆分的條件是什麼? – Yahfoufi

+0

鑑於您提供的源查詢,對於每個'invno',你想創建一個帶有「other data」'date_received'等的輸出文件,是嗎? – billinkc

+0

是的,這是不完整的查詢只是樣本所以invno 1234創建一個文件,invno 1235創建單獨的文件等,我只是不知道有多少不同的invno會有 –

回答

2

使用現成的組件部分的覆蓋,你最好的選擇將是有這樣的事情

enter image description here

執行SQL任務將返回一個完整結果集到Object類型的SSIS變量。您的查詢將生成不同的INVNO集。 SELECT DISTINCT T.INVNO FROM dbo.Sales AS T;

然後,Foreach Loop容器將把該記錄集「碎片化」爲我們INVNO的單個實例。這要求你有一個變量,可能是String類型的變量來接收這個數字。

數據流任務將具有作爲源查詢的參數化查詢。假設OLE DB連接管理器爲select INVNO, date_received FROM dbo.Sales AS S WHERE S.INVNO = ?;,然後映射INVNO的當前值(作爲從FELC分解的一部分)

最後,平面文件連接管理器將在ConnectionString上有一個表達式這些屬性是輸出文件完整路徑的因素。這可能是一樣簡單的東西"C:\ssisdata\" + @[User::Invno] + ".csv"

哦,並設置DelayValidation = True爲平面文件連接管理器和數據流任務。

+0

我懷疑我的[先前的答案](http ://stackoverflow.com/search?q = user%3A181965)將會得到很多結果,但我想不出一個確切的副本來關閉它。即[碎片](http://stackoverflow.com/search?q=user%3A181965+shred)[FELC](http://stackoverflow.com/search?q=user%3A181965+FELC)等 – billinkc

+0

謝謝你這個爲我完美工作 –