首页 > 解决方案 > 当数据流位于 For Each 循环容器中时,记录集目标中的变量被替换了吗?

问题描述

我有一个带有多张工作表的 Excel 电子表格。所以在 For Each 循环容器中有一个脚本,它正在读取工作表并将它们保存到变量中。在仍然在 For Each 循环容器内部的数据流中,是导致记录集目标的过程,该目标将所有列保存到另一个变量。然后在 for each 循环容器之外是另一个数据流,它必须从变量中读取所有行检查重复性(在第二张和第三张表中是重复的产品 ID),删除重复性并将数据上传到数据库中。我一直在到处搜索,找不到如何设置记录集目标以不替换变量而是将其附加到值,因为最终只有最后一张数据。

由于循环通过工作表,无法在设置中的 foreach 循环容器中进行更改。

提前感谢您的任何建议。

标签: ssisrecordsetforeach-loop-container

解决方案


虽然希望 SSIS 中更聪明的人会在这里加入,但我认为你目前的方法不会奏效。

一般来说,您可以使用 SSIS 中的表达式来获得动态行为。但是,Recordset Destination 的 VariableName 不支持这一点。

可能能够在数据流之后rsCurrent根据当前循环复制到 rsIteration1、rsIteration2 等中的脚本任务,但此时,您将重复复制数据而没有实际价值。

由于您正在进行重复检查,因此可能会读取工作表 1 进入缓存连接管理器

然后从后续页面读取将使用 CCM 作为查找。对于具有匹配项的行,那么您知道您有重复项(或者您可能只导入不匹配的内容,我不太明白您的逻辑)

调试其中一些将非常具有挑战性。如果可能的话,我会将数据暂存到表格中。在那里您可以加载所有数据 + 选项卡名称,然后您可以测试您的重复数据删除并参考您的输入和输出。

Object 类型的 SSIS 变量的工具非常有限,这很遗憾。


推荐阅读