我在SAS工作的站点在AIX上运行,而我需要的一些文件驻留在窗口文件服务器上 . 我用谷歌搜索了几个选项,但没有提供解决方案/希望,除了这个:
enter code here
filename indir
ftp 'Windows\Output\FO\20140813'
host=' xxxxxxx.xxxxxxxxxxxx.xxxxxxxxxxxx.xxx ' DIR
user='xxxxxxxxx' pass=xxxxxxx;
filename outdir
ftp '/AIX/Lev1/groups/xxx_xxx_xxxxxx/DPL' host=' xxxxxxx.xxxxxxx.xx DIR
user='xxxxxxxxx' pass=xxxxxxx;
data _null_;
infile indir(DPL20140813.csv) truncover;
input;
file outdir(DPL20140813.csv);
put _infile_;
run;
我遇到的问题是只读取和写入第一行的一部分,其中包含变量名称和其他内容(大约65,000条记录) .
我错过了什么?
日志显示:注意:从infile库INDIR中读取了总共1条记录 . 最小记录长度为256.最大记录长度为256.注意:从infile INDIR(DPL20140813.csv)读取1条记录 . 最低记录长度为256. 2 SAS系统08:50 2014年9月8日星期一
The maximum record length was 256.
注意:共有1条记录被写入文件库OUTDIR . 最小记录长度为256.最大记录长度为256.注意:1条记录被写入文件OUTDIR(DPL20140813.csv) . 最小记录长度为256.最大记录长度为256.注意:使用DATA语句(总处理时间):实时0.38秒cpu时间0.18秒
2 回答
我猜它是TERMSTR和LRECL问题的组合 .
首先,将LRECL设置为32767(最大值),或任何适合您数据的特定值 . 256是标准,所以它可能比256我想的更长的线 .
其次,您需要TERMSTR = CRLF,因为AIX仅在LF上终止 . 我不确定这会不会引起你的问题,但这肯定是你至少应该做的事情 . 这假定Windows文件是在Windows中创建的(因此在其上有CRLF) .
不使用SAS在两个FTP位置之间读入和写出,而是使用SAS在命令行上简单地调用FTP ...
示例(未测试,相应地替换适当的值):