【问题标题】:SQL Server 2016 SSIS Conditionally Overwrite Text FileSQL Server 2016 SSIS 有条件地覆盖文本文件
【发布时间】:2017-10-20 08:31:34
【问题描述】:

想象以下场景: 1.有N个工作 2. 作业每天按顺序将数据写入同一文件一次 3.任务设置指示文件是否应该被覆盖或附加到

到目前为止,我尝试的是在我的data flow 中使用conditional split

为了测试它,案例 1 和 2 是:

实际发生的情况是,条件拆分试图确定将哪些数据行发送到哪里,最终将所有行发送到一侧,将 0 行发送到另一侧,并且双方最终都打开文件(我认为),因此错误:

我知道我在这里误用了conditional split,但是来吧,外面是 2017 年,必须是一种无需求助于 脚本任务 清除文件?

【问题讨论】:

    标签: sql-server ssis sql-server-2016


    【解决方案1】:

    你的问题 - 你误用了条件分割;它旨在操作数据流中的数据行,并且您正在尝试管理控制流。说到 SSIS,它事先并不知道你将只使用 Flat File Destinations 之一;它试图初始化两者。通过这样做,SSIS 尝试从两个目标打开同一个文件,但失败并出现错误。
    您可以使用 SSIS 方式处理任务 - 使用任务管理控制流。在您的情况下,应附加或覆盖目标文件。但是被覆盖可以被视为被零行覆盖然后被附加。幸运的是,SSIS 覆盖了文件事件,没有记录来自数据流。
    因此,在您应该始终附加数据的数据流之前,您创建另一个始终接收零行数据的数据流(集合中的列可以是任意的)并 Flat File Destination 覆盖文件。然后使用具有优先约束的控制流的条件执行来执行这个“文件清理数据流任务”。您可能还需要在此“文件清理数据流任务”上设置DelayValidation=true

    【讨论】:

    • 感谢您的回答。我已经通过参数化的“删除文件”任务将逻辑移到了控制流中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2016-04-15
    • 2022-07-17
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多