Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql sas宏从多个文件中提取数据_Sql_Macros_Sas - Fatal编程技术网

Sql sas宏从多个文件中提取数据

Sql sas宏从多个文件中提取数据,sql,macros,sas,Sql,Macros,Sas,我正在尝试将数据从15个不同的txt文件导入sas。我想将不同的文件名输入一个数组,然后使用宏中的数组元素将所有数据输入到工作文件夹中。以下措施不起作用;非常感谢您的帮助 %macro DATAIMP; array filenames(3) visit visit_event department %do i =1 %to 3 %by 1 proc import datafile="C:\Users\AR\Documents\data\&filename(i).txt" OUT= &

我正在尝试将数据从15个不同的txt文件导入sas。我想将不同的文件名输入一个数组,然后使用宏中的数组元素将所有数据输入到工作文件夹中。以下措施不起作用;非常感谢您的帮助

%macro DATAIMP;
array filenames(3) visit visit_event department
%do i =1 %to 3 %by 1
proc import
datafile="C:\Users\AR\Documents\data\&filename(i).txt"  
OUT= &filenames(i)_1
dbms=dlm replace;
delimiter=";";
getnames=yes;
run;
end;
%mend DATAIMP;

%DATAIMP;
run;

array
是数据步骤中的状态集,不能这样使用。 您可以创建一个包含所有文件名的数据集,并从中创建宏变量:

data file;
input filename $50.;
datalines;
visit 
visit_event 
department
;
run;


%macro DATAIMP;
data _NULL_; /*local macro variables called FILENAME1, FILENAME2,...*/
    set file end=fine;
    call symput("FILENAME"||compress(_N_),filename);
    if fine then call symput("NF",compress(_N_));
run;
%DO I=1 %TO &NF;
    proc import
    datafile="C:\Users\AR\Documents\data\&&FILENAME&I...txt"  
    OUT= &&FILENAME&I.._1
    dbms=dlm replace;
    delimiter=";";
    getnames=yes;
    run;
%END;
%mend DATAIMP;

%DATAIMP;
请记住,
&
解析为
&
,对于每个宏解析,您需要一个
来标记宏变量的结束