2016-03-01 86 views
0

我在SAS中的任务是通过带有扩展名tmp的SFTP上传文件,上传完成后将其重命名为csv。因为我不是服务器的管理员,所以我的调试输出是有限的,而且我正在努力实现正确的实现。下面的代码生成的SAS日志中没有错误,但不会重命名文件:SAS在SFTP上重命名文件

%let host=...; 
%let sftpUser = ...; 
%let filename_tmp=20160301-test01-sas.tmp; 
%let filename=20160301-test01-sas.csv; 
%let sftpPath=...; 

FILENAME test SFTP "&sftpPath.&filename_tmp." 
HOST="&host." 
USER="&sftpUser." 
DEBUG; 

proc export data=.... outfile=test dbms=csv replace; 
run; 

data _null_; 
rc=rename("test&sftpPath.&filename_tmp.", "test&sftpPath.&filename.", 'file'); 
run; 

我已经阅读文件名的文件,并重新命名,但我坚持不下去了如何既语句组合一个线索 - 任何帮助或提示或替代方案非常感谢。

感谢 斯蒂芬

+0

是否有一个原因,你不能在SFTP本地执行重命名? – floydn

+0

你好floydn,是的,确实有一个。目标服务器上正在运行一个脚本,用于扫描csv文件并每分钟移动它们,因此存在在上载未完成时移动文件的危险。因此我想将它们作为tmp上传并在之后重命名。 –

回答

0

有在目标服务器上扫描的CSV文件运行并将其移动每分钟于是就有了危险,即当没有完成上传的文件被移动的脚本。

我敢肯定,没有文件被移动的危险,因为它应该被锁定直到上传完成。去尝试一下。

+0

嗨Crna Krv,感谢您的反馈 - 我测试了一个导出很多行的文件,并且在导出过程中文件被删除了。因此我需要实现重命名版本。 –