我有一个使用FTP的SSIS包。现在我需要改变它来做SFTP,有可能我可以使用FTP任务并执行SFTP,或者在不使用WinSCP的情况下执行SFTP。
答案 0 :(得分:1)
没有开箱即用。您还可以使用其他任务在脚本中使用任何SFTP库,或使用SFTP powershell命令。付费组件通常更好,因为您发现的大多数SFTP任务看起来有点过时且用户界面有点笨拙。
对于初学者,您可以查看SSIS SFTP Task Component。这取决于SharpSSH,这是一个自2013年以来未经更新的图书馆
另一方面,Posh-SSH和基础库SSH.NET仅在几周前发布。
在我的情况下,我最终使用带有PowerShell脚本的Posh-SSH,因为它允许我比较远程和本地文件的目录列表,使用标准PowerShell操作检测新文件并下载仅使用SFTP的较新/更改的文件。
例如,以下Powershell函数将检索两个列表并使用Compare-Object命令对它们进行比较:
function get-diffs( $session,$remotePath,$localPath)
{
$remoteFiles=Get-SFTPChildItem -SFTPSession $session -Path $remotePath
$localFiles=Get-ChildItem $localPath
Compare-Object -ReferenceObject $localFiles -DifferenceObject $remoteFiles -Property "Name" -PassThru
}
结果包含SideIndicator
属性,该属性显示哪些文件必须从一侧移动到另一侧。例如:
$newFiles=$diffs|where SideIndicator -eq '=>'
...
foreach ($f in $newFiles)
{
Get-SFTPFile -SFTPSession $session -RemoteFile $f.FullName -LocalPath $dropFolder -Overwrite
}
使用SSIS做同样的事情将是 lot 更难。