答案 0 :(得分:2)
基于您的评论,我将假定您要使用SQL命令遍历许多表,检查表是否包含行,如果是,则应将行导出到平面文件,否则应忽略表。我将提到实现该目标所需的步骤,并提供包含每个步骤更多详细信息的链接。
Execute SQL Task
和store the Resultset inside a variable添加SELECT COunt(*) FROM ....)
@[User::RowCount] > 0
的表达式进行数据流任务此外,最好检查一下我提供的链接,因为它们包含很多有用的信息和分步指南。
防止SSIS创建空的平面文件是一个常见问题,您可以在网上找到很多参考,建议了许多解决方法以及许多方法可以解决此问题:
Data Flow Task
Delay Validation
属性设置为True
Data Flow Task
,该列表仅用于计数源中的行,如果它大于0
,则优先级约束应导致另一个Data Flow Task
File System Task
之后添加Data Flow Task
,如果RowCount为o
,则会删除输出文件,您应该设置优先级约束表达式来确保。Data Flow Task
Delay Validation
属性设置为True
答案 1 :(得分:2)
这是非常令人期待和已知的令人讨厌的行为。 即使未选中,SSIS也会创建一个空的平面文件:“第一个数据行中的列名”。
解决方法是:
更新2019-02-11:
问题是我在导出到csv命令中有13个 数据流,它们是昂贵的查询
OnPostExecute
事件处理程序,以便将清理逻辑隔离到某些数据流: