SSIS条件基于列值进行拆分

时间:2017-04-19 10:57:30

标签: ssis conditional-split

美好的一天,

我有一个select查询,我从sql中提取数据,即

select invno , date_received from sales

我想要做的是使用条件拆分将文件拆分为多个文件。 我不知道如何设置我尝试的条件,如下所示 enter image description here

但它只创建了一个文件,如果我不知道列值是什么,如何根据列值创建多个文件?

另外我想将列值(即INVNO)分配给文件名以防止覆盖文件

1 个答案:

答案 0 :(得分:2)

使用开箱即用的组件,你最好的选择是拥有这样的东西

enter image description here

执行SQL任务将完整结果集返回到Object类型的SSIS变量。您的查询将生成不同的INVNO集。 SELECT DISTINCT T.INVNO FROM dbo.Sales AS T;

Foreach循环容器然后将该记录集“粉碎”成我们的INVNO的单个实例。这要求您有一个变量(可能是String类型)来接收该数字。

数据流任务将具有参数化查询作为源查询。假设OLE DB连接管理器,它是select INVNO, date_received FROM dbo.Sales AS S WHERE S.INVNO = ?;然后你映射当前的INVNO值(作为从FELC粉碎的一部分)

最后,平面文件连接管理器将在ConnectionString属性上具有一个表达式,该表达式会影响输出文件的完整路径。它可能像"C:\ssisdata\" + @[User::Invno] + ".csv"

这样简单

哦,并为Flat File Connection Manager和数据流任务设置DelayValidation = True。