首页 > 解决方案 > 提高将非常慢的文件附加到主文件的速度

问题描述

我正在尝试将一组 (10) 相同列的 Excel 文件组合(或者附加是一个更好的术语)到一个主文件中。

我尝试了一个非常简单的过程,在控制流中使用 foreach 循环,并简单地对 Excel 目标执行 Excel 源。这个过程不仅很慢(大约每秒粘贴 1 条记录),而且在大约 50k 条记录之后该过程就终止了。

它看起来像:Foreach 循环容器 --> 数据流任务

其中数据流任务是 Excel 源 --> Excel 目标

最后,我希望看到一个附加了所有文件的主文件。我认识到还有其他工具可以直接在 Excel 中执行此操作,例如 PowerQuery,但我正在努力更好地理解 SSIS,并且我有很多在 SQL Server 中可以更好地完成的处理。

有一个更好的方法吗?我在网上搜索了高低,但在 SSIS 中找不到这样的例子。

标签: excelssisetl

解决方案


这很简单。我建议的一件事是加载到 csv 格式的平面文件,该文件可以在 Excel 中轻松打开。

  1. 在文件名上枚举的 Foreach 循环。
  2. 在 Foreach GUI 集中:
  3. Excel 文件的路径
  4. 文件的结构(例如 myfiles*.xls)
  5. 转到变量映射并将完全限定名称映射到变量
  6. 创建与任一文件的 Excel 连接。
  7. 在 excel 连接属性中打开 Expression 并将文件路径设置为从 5 开始的变量
  8. 同样在属性中将延迟验证设置为 true
  9. 将数据流任务添加到 foreach 循环容器
  10. 转到数据流
  11. 使用源码助手读取excel源码
  12. 使用目的地助手加载到一个平面文件(一定不要覆盖目的地,否则你只会得到最后一个工作簿

推荐阅读