如何使用SSIS将文件夹从FTP复制到本地驱动器?

时间:2015-06-10 19:42:38

标签: sql ssis ssis-2012 ssis-2008

我们每天都有一个在FTP上发布的通话记录。作为备份我想每天将这些录音从FTP复制到本地驱动器。是否可以整个复制整个文件夹并将文件夹粘贴到我的本地并重命名?

提前致谢

2 个答案:

答案 0 :(得分:1)

2008年的BIDS有一个FTP任务,但我从不使用它。 SFTP等还有几个thirdextensions,但我不使用它们。

[编辑:由于以上链接是关闭的CodePlex,我将提供更多详细信息。第一个链接是标题为“SSIS SFTP任务控制流程组件”的项目,第二个链接是标题为“SSIS扩展 - SFTP任务,PGP任务,Zip任务”的项目。截至2017年6月,项目似乎没有明显的重新托管。]

我倾向于使用WinSCP with a script file。它肯定是Microsoft-y最少的方法,但是,IMX,它更加万无一失。这具有为FTP,FTPS和SFTP工作的优点。它的缺点是您以纯文本格式存储密码。您可以将其存储在WinSCP会话管理器的注册表中,但我相信这是一个每用户注册表,当您使用SSIS代理帐户使用SQL代理时,它可以带来很多乐趣。

使用您要使用的命令创建脚本文件。请务必指定option batch abortoption confirm off。您也可能想要指定option failonnomatch,但我还没有测试过那个,因为我还在使用不支持该选项的稍微旧版本。

我看起来像这样:

# Set batch settings
option batch abort
option confirm off

# Connect
open sftp://user:password@sftp.server.com -hostkey="ssh-rsa 2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff"

# Change remote and local directories
lcd "M:\SSIS\eSchoolPlus to Clever\Output"

# Transfer files
put -nopreservetime -nopermissions -transfer=ascii file1.csv
put -nopreservetime -nopermissions -transfer=ascii file2.csv
put -nopreservetime -nopermissions -transfer=ascii file3.csv
put -nopreservetime -nopermissions -transfer=ascii file4.csv
put -nopreservetime -nopermissions -transfer=ascii file5.csv

close
exit

put上的选项是由于远程服务器如何为我碰巧抓取的脚本工作。 get的工作原理大致相同。

然后使用执行流程任务。可执行文件是C:\Program Files (x86)\WinSCP\WinSCP.exe,我使用的参数是:

-console -script="X:\Path\To\Script\WinSCPScript.txt" -xmllog="X:\Path\To\Script\WinSCP-!S-!Y-!M-!D-!T.log" -xmlgroups`

这会创建WinSCP信息的每日日志。与旧的日志格式IMO相比,XML日志更具可读性和实用性,IMO包含大量调试信息。

您还可以使用WinSCP .NET library和执行脚本任务一起使用,但这显然需要付出更多努力。 They do have a HOWTO for that, however

答案 1 :(得分:0)

是 - 您将使用文件系统任务并将操作设置为复制目录(在Microsoft使用Win 95更改文件夹之前)被称为目录)。您可以在目标连接中更改选择目标文件夹的名称。如果需要,可以使用表达式添加日期。

https://msdn.microsoft.com/en-us/ms140185.aspx

如果你需要它们,这里有一些很好的分步说明,因为微软给出的模糊描述没有例子:

http://oops-solution.blogspot.com/2011/11/file-operation-copy-move-rename-and.htmlhttp://oops-solution.blogspot.com/2011/11/file-operation-copy-move-rename-and.html