在SSIS中自动生成拆分文件的目标

时间:2015-01-26 22:44:53

标签: sql-server sql-server-2008 ssis

我正在制作我的第一个SSIS包。我的数据看起来像是:

Loc   Data
1     asd
1     qwe
2     zxc
3     jkl

我需要根据Loc值将所有行转到不同的文件。因此Loc = 1的所有数据行应该在名为Loc1.txt的文件中结束,并且彼此相同。

看起来这可以通过条件拆分到平面文件来实现,但这需要每个位置的目标。我有很多地方,除了分成不同的文件外,它们都将以相同的方式处理。

是否有内置方法可以在不创建一堆目标组件的情况下执行此操作?或者我至少可以使用脚本组件作为一种方式吗?

3 个答案:

答案 0 :(得分:0)

您应该能够使用变量设置表达式。定义直到目录的路径,然后将变量设置为等于该列。

您需要一个执行SQL任务来返回单行结果集,并在容器中为原始结果集中的每一行循环。

我目前无权发布截图,但this link should help outline the steps.

因此,当您的包运行时,表达式将如下所示:

'C:\Documents\MyPath\location' + @User::LocationColumn + '.txt'

它应该最终根据位置向您的目录提供文件。

User::LocationColumn设置为结果集中的位置列。将结果集写入按位置分组,因此所有记录都会写入每个位置的单个文件。

答案 1 :(得分:0)

我花了一些时间尝试使用@Phoenix建议的方法完成此任务,但在此过程中偶然发现了this video

我最终选择了视频中显示的方法。我希望我不必将它分成每个位置的多个select语句,另外一个用于获取不同的位置,但我认为视频中的SSIS实现比替代方案更清晰。

答案 2 :(得分:0)

更改连接管理器的连接字符串,您必须使用应更改的变量。

通过改变变量,目标文件也会发生变化 和连接字符串是:

' C:\文件\ ABC \文件\' + @User :: data +' .txt'


投票,如果它可以帮助你