Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 如何防止在枚举中重复加载源表?_Ssis - Fatal编程技术网

Ssis 如何防止在枚举中重复加载源表?

Ssis 如何防止在枚举中重复加载源表?,ssis,Ssis,我发布了一个类似的问题,但似乎我没有解释清楚,所以我再次发布它来解释我的目的 我的源表中有数百万行,我将数据从平面文件提取到SQL DB 为了添加派生列,我使用foreach循环枚举所需的(ADO记录集)变量,如(345789809686)中的ID 因此,如果我有一百万行,它将枚举一百万次以找到我需要的值!有没有办法防止这种情况?或者是否有任何方法可以替换foreach循环?如果您试图向文件中的数据添加代理项/标识,则派生列转换不会执行此操作,因为派生列只能看到当前行-没有用于检查上一行或后

我发布了一个类似的问题,但似乎我没有解释清楚,所以我再次发布它来解释我的目的

我的源表中有数百万行,我将数据从平面文件提取到SQL DB

为了添加派生列,我使用
foreach
循环枚举所需的(ADO记录集)变量,如(345789809686)中的ID


因此,如果我有一百万行,它将枚举一百万次以找到我需要的值!有没有办法防止这种情况?或者是否有任何方法可以替换foreach循环?

如果您试图向文件中的数据添加代理项/标识,则派生列转换不会执行此操作,因为派生列只能看到当前行-没有用于检查上一行或后续行的工具

如果您试图添加一个标识符度量,比如数据源加载id,考虑到您在foreach循环容器中循环某些内容,这可能是有意义的

你的问题表明

如果我有一百万行,它将枚举一百万次以找到我需要的值

如果你知道你在寻找什么样的值,那么不要使用foreach枚举器,只要从源代码中获取值就行了(进程没有图片,所以我不知道这是否合理)

如果您将ADO记录集中的所有值应用于平面文件中的所有行,然后将其填充到表中-同样,我们从问题和您提供的内容中可以看到,那么您有一个交叉联接/笛卡尔积,因此在SSIS术语中,您可能正在寻找一个。。。在数据流中以异步模式运行的脚本组件,然后可以消除填充ADO.net记录集和foreach循环容器的处理,并将其直接插入数据流中


但我们需要更多关于您试图解决的核心问题的详细信息,以及您使用的数据源/目的地。搜索/筛选应如何进行等。

目标是什么?您是否正在尝试查看平面文件中的当前记录是否已存在于数百万表中?如果是这样,请使用查找而不是派生列,这样就不需要循环。或者更好的方法是,将平面文件加载到临时表中,并在执行SQL(或存储过程)中进行合并。派生列公式是什么?您需要列举哪些变量?我要直截了当地告诉你,这个问题并不比你昨天发布的问题好多少。你没有告诉我们你想完成什么。我们需要更多的细节来了解如何帮助您。