我正在制作我的第一个SSIS包。我的数据看起来像是:
Loc Data
1 asd
1 qwe
2 zxc
3 jkl
我需要根据Loc值将所有行转到不同的文件。因此Loc = 1的所有数据行应该在名为Loc1.txt的文件中结束,并且彼此相同。
看起来这可以通过条件拆分到平面文件来实现,但这需要每个位置的目标。我有很多地方,除了分成不同的文件外,它们都将以相同的方式处理。
是否有内置方法可以在不创建一堆目标组件的情况下执行此操作?或者我至少可以使用脚本组件作为一种方式吗?
答案 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'
投票,如果它可以帮助你