有一段导入文件夹下所有文档程序如下:
%macro mReadfolder;
%let filrf=mydir;
%let rc=%sysfunc(filename(filrf,"F:\Mechanicalfailuresummary\csvFiles"));
%let did=%sysfunc(dopen(&filrf));
%let lstname=b;
%let memcount=%sysfunc(dnum(&did));
%if &memcount > 0 %then
%do i=1 %to &memcount;
%let lstname=%sysfunc(dread(&did,&i));
proc import out=a
datafile= "F:\Mechanicalfailuresummary\csvFiles\&lstname"
dbms=csv replace;
run;
%end;
%let rc=%sysfunc(dclose(&did));
%mend mReadfolder;
%mReadfolder;
运行结果只能导入文件夹下一个文件的内容,而不是所有的。日志报错如下:
informat VAR1 anydtdtm40. ;
51 informat w002_CI_GbLubOilFilterInletPre best32. ;
52 format VAR1 datetime. ;
53 format w002_CI_GbLubOilFilterInletPre best12. ;
54 input
55 VAR1
56 w002_CI_GbLubOilFilterInletPre
57 ;
58 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
59 run;
NOTE: INFILE 'F:\Mechanicalfailuresummary\csvFiles\w002_CI_GbLubOilFilterInletPre.csv' 是:
文件名=F:\Mechanicalfailuresummary\csvFiles\w002_CI_GbLubOilFilterInletPre.csv,
RECFM=V,LRECL=32767,文件大小(字节)=8558710,
上次修改时间=2016年01月04日 15时24分11秒,
创建时间=2016年01月08日 21时37分13秒
NOTE: 在第 259355 行、第 3-25 列中有对“w002_CI_GbLubOilFilterInletPre”无效的数据。
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
259355 ,此次查询总耗时 515 毫秒 25
VAR1=. w002_CI_GbLubOilFilterInletPre=. _ERROR_=1 _N_=259354
NOTE: 从 INFILE 'F:\Mechanicalfailuresummary\csvFiles\w002_CI_GbLubOilFilterInletPre.csv' 中读取了 259354 条记录。
最小记录长度是 25。
最大记录长度是 31。
NOTE: 数据集 WORK.A 有 259354 个观测和 2 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.34 秒
CPU 时间 0.34 秒
Errors detected in submitted DATA step. Examine log.
259354 rows created in WORK.A from F:\Mechanicalfailuresummary\csvFiles\w002_CI_GbLubOilFilterInletPre.csv.
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
实际时间 0.39 秒
CPU 时间 0.39 秒