【问题标题】:SSIS Excel destination inserting null values on other columnsSSIS Excel目标在其他列上插入空值
【发布时间】:2021-03-23 04:32:30
【问题描述】:

我有 2 个脚本组件从结果集对象中提取数据,例如 User::AllXData 和 User::AllYData。

它通过foreach循环运行,数据存储在数据表中。

接下来,我将使用 Excel 目标将数据添加到 Excel 工作表中。现在当我这样做的时候。与 A 列对应的所有数据(即来自 User::AllXData 的数据)正在添加到 Excel 工作表中,但 B 列被填充为空值,直到 A 列的数据结束。

然后 B 列被填充,而 A 列则为空数据。它应该是对齐的。

有解决办法吗?

编辑:

【问题讨论】:

  • 您有两个脚本源将单独的行插入到同一个表中 - 当然,每组数据中有一半的列将为空。您可能需要将脚本源插入到单独的数据表中,然后将两者组合到第三个脚本源中。数据如何对齐?您在 Col A 中有三个值,但在 Col B 中有四个值,因此显然不是 1:1 对齐。
  • @AlwaysLearning 哎呀,我的错。现在已经编辑了。所以你是说脚本组件的输出列被用作另一个脚本组件的输入?能否请您详细说明这部分?
  • 来源一样吗?你能写一个查询来按照你想要的方式格式化数据集吗?如果没有,则在排序后的数据上添加一个 row_number 并在 row_number 上进行合并连接。
  • @KeithL 我本来可以对数据进行排序和合并,但我不能,因为我希望文件中的数据来自我的源。不过,我遇到了一个解决方案,请查看此帖子的答案

标签: c# .net sql-server ssis automation


【解决方案1】:

经过长时间的打磨和多次测试,终于找到了一个解决方案。

这个问题的答案很简单。与其使用两个对象作为结果集,不如只使用一个。

如果您要从单一来源进行查询,请将 SQL 查询中的所有必需列包含到一个对象结果集中,并将其用作脚本组件中的只读变量。

创建一个包含所有必需列的单个数据表,并将它们逐行添加到您的 Excel 目标中,不包含任何空值。

Here's an article that has a good example.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多