SSIS 从 RecordSet 进行逐一更新的替代方案

问题描述 投票:0回答:2

我正在寻找一种方法来加速以下过程:我有一个 SSIS 包,它每周将 Excel 文件中的数据加载到 SQL Server。
有 3 个字段:品牌、日期、价值
在数据流中,我检查 Brand+Date 的现有组合,新组合直接转到表,现有组合转到 RecordSet 目的地进行更新:

下一步是更新现有组合的值:

如您所见,有数千条记录需要更新,而且时间太长。记录数量往往每周都在增长。请推荐。

sql sql-server t-sql ssis
2个回答
2
投票

最快的方法是使用

ELT (Extract Load Transform)
方法在存储过程中执行此操作。

  1. 将 Excel 中的所有数据按原样推送到表中(理论上称为加载到暂存表)。由于您似乎不关心数据验证步骤,因此该表可以是最终目标表列的副本。
  2. 下一步是使用执行 SQL 任务调用存储过程。您可以在此过程中放置所有业务逻辑。由于这一步是在 SQL Server 实体上进行本机数据操作,因此它是最快的替代方案。
  3. 作为最后一部分,请删除暂存表中的所有条目。

您可以在临时表上使用索引以使 SP 部分更快。


0
投票

最好在数据库中拥有临时表而不是记录集中,因为临时表不会出现大数据问题。您可以在每次使用之前或之后删除它,基本上它会起到相同的作用,但您的包不会在更大的数据量上失败。

© www.soinside.com 2019 - 2024. All rights reserved.