3

我已经阅读了以下指南来设置 SSIS 包以检索位于 SFTP 服务器上的文本文件:

https://www.mssqltips.com/sqlservertip/3435/using-sftp-with-sql-server-integration-services/

总而言之,SSIS 包执行 PSFTP.exe(一种 PuTTY 工具),它采用必要的凭据连接到服务器。它还需要一个在连接后执行的批处理文件。此批处理文件包含检索所需文本文件的命令。从指南开始,它只包含一个用于更改目录的 cmd 命令和一个用于检索文件的 get 命令:

cmd DataDump
get TeleMarketingResults.txt

所有这一切都很好。

当我尝试使此批处理文件逻辑更复杂时,就会出现问题,因为它似乎无法识别基本关键字。例如,我想修改它以检索最新的文件,所以我尝试添加:

for /f %%i in ('dir /b/a-d/od/t:c') do set LAST=%%i
echo The most recently created file is %LAST%

但后来我得到这些错误:

psftp: unknown command "for"
psftp: unknown command "echo"

如果我在本地目录中手动执行批处理文件,它就可以工作。仅当将其作为参数传递给 PSFTP.exe 时才会出现此问题。为什么是这样?

4

1 回答 1

2

psftp 脚本文件只能包含 psftp 命令。forset或者dir不是 psftp 命令。

使用 psftp 检索最新文件几乎没有任何合理的方法。您必须分两步完成。首先检索列表并将其存储到文件中。然后使用一些智能批处理文件命令解析该文件以查找最新文件。然后再次运行 psftp 以下载该文件。它既麻烦又无效,因为它需要两个连接。

您最好使用功能更强大的 SFTP 客户端。例如,我的WinSCP SFTP 客户端很简单。看

于 2019-06-18T18:55:36.400 回答