SSIS替代RecordSet中的逐个更新

时间:2017-04-18 08:57:12

标签: sql-server tsql ssis

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

DataFlow1

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

DataFlow2

正如您所看到的,有数千条记录需要更新,而且需要很长时间。记录数量往往逐周增长。请建议。

1 个答案:

答案 0 :(得分:2)

最快的方法是使用ELT (Extract Load Transform)方法在存储过程中执行此操作。

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