【发布时间】:2019-11-01 09:06:36
【问题描述】:
我已通过以下指南设置 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 时才会出现此问题。这是为什么呢?
【问题讨论】:
-
PSFTP显然是在读取应该执行的命令之后的批处理命令。将FTP命令放入文件中,并使用PSFTP <filecontainingftpcommands和for作为下一个批处理步骤。 -
我无法从这样的文件中传递参数来工作,它应该是 .bat 还是 .txt 文件?我是否包含“
-
虽然@Magoo 的建议在某些情况下会有所帮助(比如如果您想上传最新的本地文件),但它不会在这种情况下为您提供帮助(下载最新的远程文件)。您显然想在 SFTP 服务器上运行
dir。但这是不可能的。恐怕你在这里浪费时间。
标签: batch-file ssis sftp psftp