【问题标题】:Conditional statement in SSISSSIS 中的条件语句
【发布时间】:2013-10-14 09:49:45
【问题描述】:

平面文件目标活动中是否可以有条件语句?

条件是当SQL Query产生行时(或行数大于0时),则将结果导出为txt文件。

我尝试在 ADO 源活动之后使用 RowCount 和条件拆分活动,但即使没有检索到任何行,它仍会生成报告。

以下是数据流活动的截图:

【问题讨论】:

  • 您是否将行数的结果加载到变量中?您是否在条件拆分中使用此变量?请张贴您正在使用的表达方式。还要调试您的代码并确保按预期填充变量。
  • 这实际上是我的测试解决方案。行计数的结果存储在@RowCount 中,我也在条件拆分中使用此变量。但是,即使没有检索到记录,它仍然会生成文件。
  • Ado net Source 你用的是什么数据库?您不能在同一数据流中将行计数元素与变量一起使用...。行计数元素仅在他使用的数据流完成后才起作用...
  • 正如贾斯汀所暗示的 - 首先在一个数据流任务中获取它自己的行数。然后创建另一个单独的数据流任务来创建和加载平面文件,但设置为“启用”属性以基于行数。这是我的猜测,从未使用过行数。如果源很大,这将非常慢。实际上,最好运行 SELECT COUNT(*) FROM Table 并将结果加载到变量中。

标签: ssis conditional-statements


【解决方案1】:

正如贾斯汀所暗示的那样 - 首先在一个数据流任务中自己获取行数。然后创建另一个单独的数据流任务,该任务创建并加载平面文件,但将“启用”属性设置为基于行数(使用表达式)。这是我的猜测,从未使用过行数

像这样,除了您的第二步使用表达式来启用或禁用。 http://www.daveturpin.com/2009/10/write-row-count-to-flat-file-using-ssis-part-ii/

请记住,如果源数据集很大,这将非常慢。实际上,您最好运行 SELECT COUNT(*) FROM Table 并将结果加载到变量中。这样一来,您就不会计算每一行并将数据不必要地流式传输到 SSIS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2019-08-27
    • 2011-01-20
    • 2014-02-15
    相关资源
    最近更新 更多