如何用SAS宏将指定前缀的WORK数据集保存至特定目录为TXT文件
SAS宏实现指定前缀数据集导出为TXT文件
以下是满足需求的SAS宏,自动将WORK库中以ABAR、BLOP、CLUF开头的数据集导出为同名TXT文件,保存到指定目录:
%macro export_datasets_to_txt(out_path='/export/home/name-2356/Folder'); /* 获取WORK库中符合前缀要求的数据集列表 */ proc sql noprint; select memname into :ds_list separated by ' ' from dictionary.tables where libname = 'WORK' and (memname like 'ABAR%' or memname like 'BLOP%' or memname like 'CLUF%'); quit; /* 循环导出每个数据集 */ %let ds_count = %sysfunc(countw(&ds_list)); %do i = 1 %to &ds_count; %let dsname = %scan(&ds_list, &i); proc export data=work.&dsname outfile="&out_path./&dsname..txt" dbms=dlm replace; delimiter=','; /* 默认逗号分隔,如需制表符可改为delimiter='09'x */ putnames=yes; /* 导出变量名作为表头 */ run; %end; %mend export_datasets_to_txt; /* 调用宏执行导出 */ %export_datasets_to_txt();
关键说明:
- 宏参数
out_path指定目标文件夹路径,可根据实际情况修改 - 通过
dictionary.tables系统表筛选WORK库中符合前缀的数据集,无需手动列举 proc export默认导出逗号分隔的TXT文件,若需要制表符分隔,将delimiter=','改为delimiter='09'x即可putnames=yes会把数据集变量名作为第一行表头导出,不需要表头可改为putnames=no
注意事项:
- 确保SAS对目标文件夹
/export/home/name-2356/Folder有读写权限 - 若目标文件夹不存在,需先手动创建,或在宏中添加
%sysfunc(dcreate(&out_path))实现自动创建
内容的提问来源于stack exchange,提问作者Seydou GORO
相关产品推荐
相关产品推荐

