对于任何一种情况,任何帮助都将不胜感激。
如果
是否有任何设置可用于从 FTP 服务器并行下载多个文件?
别的
如果没有,我想我会通过 C# 脚本源组件使用:List Directory Contents with FTP、FtpWebRequest Class和C# Multiple Download from FTP using parallel task - Duplicate Download issue开始。
其他详情
- SSIS 2012 保存到本地 Windows Server 2012 目录
- 100 + ascii 文本文件
- 6 个同级文件夹
- 文件名约定:
AAAA_YYYYMMDD.txt
- 文件大小范围为 5KB - 15MB
- 目前一次只能下载一个文件
- 在此阶段通过 SSDT 每天手动运行一次(仍在原型设计/开发中,所以还没有在生产系统上,但我计划让 Sql Agent 将来运行这些包)
- 将文本文件数据加载到数据仓库暂存表的下游包
(如果使用脚本任务,那么响应流缓冲区可能会进入多播,其中 1 个缓冲区流写入文本文件,而另一个缓冲区流写入暂存表?)
本地人,没有。
哎呀,我几乎没有将开箱即用的 FTP 组件归类为真正的组件。它仅针对最基本的操作满足 FTP 的一些技术规范。我通常
ftp.exe
使用参数文件从 Execute Process Task 调用,或者只是使用 .NET 库来执行此操作。我从来没有想过并行化 FTP 下载,但是这个关于 SO 的问题看起来像是一个有效的实现https://stackoverflow.com/questions/18117536/c-sharp-multiple-download-from-ftp-using-parallel-task -重复下载问题
根据您设计事物的方式,我得出的结论是,让包下载文件然后对它可能找到的文件执行操作是一种痛苦的模式。相反,我发现通过分离这些活动并假设消费包仅在数据已经存在时才会运行,我得到了更好的结果。这使我能够对获取数据的方式进行彻底的更改(我们从 SFTP 转到 FTP,没有更改核心包),而无需验证/重新测试数据的处理。对我来说可能不是问题,但简化了我的合规生活。
上述的最终结果是我的代理工作从“运行包”变为“运行 ftp 包”、“测试存在”、“运行处理包”或“警告未找到文件”。模块化为我们提供了更大的灵活性,并且让更多的人来解决这个问题,而不是一个人在一个单一的包上工作。