【问题标题】:Auto-generating destinations of split files in SSIS在 SSIS 中自动生成拆分文件的目标
【发布时间】:2015-01-26 22:44:52
【问题描述】:

我正在开发我的第一个 SSIS 包。我有一个看起来像这样的数据视图:

Loc   Data
1     asd
1     qwe
2     zxc
3     jkl

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 谢谢。在尝试完成此方法时,我偶然发现了一个具有替代方法的视频。我现在搞定了。如果可以的话,我会 +1。
    【解决方案2】:

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

    我最终采用了视频中显示的方法。我希望不必为每个位置将其分成多个选择语句,并额外使用一个来获取不同的位置,但我认为视频中的 SSIS 实现比替代方案要干净得多。

    【讨论】:

      【解决方案3】:

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

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

      'C:\Documents\ABC\Files\' + @User::data + '.txt'


      如果对你有帮助,请投票

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 2017-11-01
        • 1970-01-01
        • 2016-02-02
        相关资源
        最近更新 更多