我已经按照以下指南设置了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时,才会出现此问题。为什么会这样?
答案 0 :(得分:2)
psftp脚本文件只能包含psftp命令。 for
,set
或dir
不是psftp命令。
几乎没有使用psftp检索最新文件的合理方法。您将必须分两个步骤进行操作。首先检索清单并将其存储到文件中。然后使用一些智能批处理文件命令解析该文件以找到最新文件。然后再次运行psftp下载该文件。这很麻烦且无效,因为它需要两个连接。
您最好使用功能更强大的SFTP客户端。例如,对于我的WinSCP SFTP client来说是微不足道的。见