【发布时间】:2016-11-13 15:44:20
【问题描述】:
%let dirname = C:\Users\data;
filename DIRLIST pipe 'dir/B &dirname\*.dbf';
/* Create a data set with one observation for each file name */
data dirlist;
length fname $8.;
infile dirlist length=reclen;
input fname $8.;
run;
data all_text (drop=fname);
set dirlist;
filepath = "&dirname\"||fname||".dbf";
infile dummy filevar = filepath length=reclen end=done missover;
do while(not done);
INPUT
F1 : 2.
F2 : 2.
F3 : 2.
F4 : 10.
F5 : 4.;
output;
end;
run;
问题在于它只读取每个文件的第一行而不是整个文件,然后再移动到下一个文件。变量 F1 也显示为缺失。
欢迎提出建议
【问题讨论】:
-
我正在尝试使用宏和管道在 SAS 中导入多个 .dbf 文件。我之前使用在线可用的标准代码为不同的文件格式完成了此操作,但我无法为 .dbf 文件执行此操作。我的数据结构如下,所有文件变量都相同:A - 数字长度 2; B - 数字长度 2; c - 数字长度 2; D - 最大数字长度 10; E - 数字长度 4;每个文件名也遵循 xxx_xxxx.dbf
-
您的代码用于读取文本文件。要读取 DBF 文件,请使用 PROC IMPORT 而不是 DATA STEP。
-
我相信我可以一次对一个文件使用 PROC IMPORT。但我需要导入 300 多个 .dbf 文件并一起追加到一个文件中。使用 PROC IMPORT 执行此操作的示例代码将非常有帮助