SAS Enterprise Guide 8.2:CSV导出至FTP成功但无文件问题排查
问题诊断与修正方案
你的FTP连接定义本身没有问题,但第3步的上传逻辑完全错误,这是导致文件未出现在FTP服务器的核心原因。以下是具体分析和修正方法:
错误点说明
proc export的作用是将SAS数据集导出为外部文件,它不能用来将本地已存在的文件上传到FTP服务器。你第3步的代码逻辑完全不符合该过程的使用场景,因此即便脚本执行报错信息未显式抛出,实际也没有完成上传操作。
正确实现方式
有两种更可靠的方式完成需求,推荐优先使用第一种(跳过本地存储,直接导出到FTP):
方式1:直接将SAS数据集导出至FTP服务器(无需本地中转)
/* 定义FTP连接,指定远程目标文件夹 */ filename myftp ftp host='hostname' cd='/SAS/' user='username' pass='password' debug; /* 直接将数据集导出为CSV到FTP指定路径 */ proc export data=WORK.TABLE_DATA outfile=myftp dbms=csv replace; filename='Test.csv'; /* 指定FTP服务器上的最终文件名 */ run;
方式2:先导出到本地,再上传至FTP服务器
如果必须保留本地文件中转的步骤,可使用data _null_完成文件复制上传:
/* 定义FTP连接 */ filename myftp ftp host='hostname' cd='/SAS/' user='username' pass='password' debug; /* 导出数据集到本地 */ proc export data=WORK.TABLE_DATA outfile="/sas/prd/data/output/Test.csv" dbms=csv replace; run; /* 定义本地文件引用 */ filename csv_file "/sas/prd/data/output/Test.csv"; /* 上传本地文件到FTP */ data _null_; infile csv_file recfm=f lrecl=32767; file myftp recfm=f lrecl=32767 filename='Test.csv'; input; put _infile_; run;
内容的提问来源于stack exchange,提问作者SimonH
相关产品推荐
相关产品推荐

