【发布时间】:2012-12-05 17:53:54
【问题描述】:
如何使用 SSIS 在 ftp 目录之间传输文件?
我知道我可以删除并重新上传文件,但有更简单的方法吗?
我想将完成的文件传输到“存档”文件夹。
【问题讨论】:
-
当您说存档时,您的意思是说即使是在 FTP 位置上?
如何使用 SSIS 在 ftp 目录之间传输文件?
我知道我可以删除并重新上传文件,但有更简单的方法吗?
我想将完成的文件传输到“存档”文件夹。
【问题讨论】:
理论上的答案是您将使用 RNFR(重命名自)/RNTO(重命名为)命令的组合来重命名(移动)文件。在您的 FTP 会话中,您会发出类似的命令
ftp> rnfr /src/test/done.txt
ftp> rnto /src/test/Archive/done.txt
我说理论上是因为我使用 Windows 命令行 FTP 客户端 (system32\ftp.exe) 连接到 z/OS ftp 服务器的测试会导致客户端指示 RNFR/RNTO 是Invalid command
Windows 客户端确实实现了一个 rename 方法,该方法在工作表下似乎发出 RNFR/RNTO。
一个简单的重命名看起来像
ftp> rename empty.txt e.txt
350 RNFR accepted. Please supply new name for RNTO.
250 /src/test/empty.txt renamed to /src/test/e.txt
但是,我无法让它在目录下移动
ftp> rename empty.txt Archive
350 RNFR accepted. Please supply new name for RNTO.
550 RNTO fails: /src/test/Archive is a directory.
ftp> rename empty.txt Archive/
350 RNFR accepted. Please supply new name for RNTO.
550 RNTO fails: /src/test/Archive/ is a directory.
ftp> rename empty.txt Archive/emp.txt
350 RNFR accepted. Please supply new name for RNTO.
550 Renaming attempt failed. Rc was 111
我不知道这是客户端实现还是服务器(或两者)的失败。或者,我的凭据可能只是一组不足的 permissions。
在命令行中让重命名工作所需的任何步骤都将是您想要发出的同一组命令。如果您使用的是内置的FTP Task,您会看到没有可用的重命名。您可能还会发现它是工具箱中最麻烦的任务之一。相反,我强烈主张使用 Windows 的命令文件 FTP client 或使用 .NET FTP library
【讨论】: