我有一个数据流过程,其中有一个 OLEDB 源和一个 OLEDB 目标,如下所示:
源合并来自两个临时表的数据并返回结果集(例如 50K 行)。这 50K 行也存在于目标表中,但是旧数据。
SELECT * FROM staging1
UNION
SELECT * FROM staging2
通常,在 OLEDB 目标中,我们将返回的数据集从源表插入到目标表,但在我的情况下,我必须使用这些新的 50K 行更新旧的 50K 行。
有点像批量更新。
谁能告诉我该怎么做?我感谢您的帮助。
您无法使用 OOB 组件在数据流任务内的 SSIS 中执行批量更新。
一般模式是识别您的插入、更新和删除,并将更新和删除推送到临时表,并在数据流任务之后,在执行 SQL 任务中使用基于集的更新或删除。看看安迪伦纳德的集成服务的阶梯系列 https://www.sqlservercentral.com/steps/updating-rows-in-incremental-loads-level-4-of-the-stairway-to-integration-services。向下滚动文章大约 3/4 到“基于集合的更新”以查看该模式。
阶段数据
基于集合的更新
与使用这样的模式相比,您将获得更好的性能OLE DB Command
除了微量数据之外的任何数据的转换。
如果您喜欢第三方工具,我相信 CozyRoc 和我知道 PragmaticWorks 有一个合并目标组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)