2013-06-21 80 views
4

我有大约720个SAS数据集(配备有720个SAS索引文件“.sas7bdnx”),我想将其转换为CSV文件。我知道如何使用proc export来一次转换一个,但是如何在一个SAS程序中进行所有转换的有效方法?所有数据集都存储在本地unix服务器上。Mass将多个SAS数据集转换为CSV文件

+0

这是一般性问题 你可以让它更具体吗? – Muath

+0

似乎很特定于我(鉴于它是一个SAS问题)。 – Joe

回答

3

这很简单,取决于你有一些合理的方法来在代码中识别它们。

下面是简单的答案:

%macro makeCSV(dataset=); 
proc export data=&dataset. file="&dataset..csv" dbms=csv replace; 
run; 
*modify export if needed; 
%mend makeCSV; 

proc sql; 
    select cats('%makeCSV(dataset=',memname,')') into :makeCSVlist separated by ' ' 
    from dictionary.tables 
    where libname='YOURLIB' and memname like 'FORCSV'; 
quit; 
*or whatever logic identifies these 720 or whatnot datasets; 
&makeCSVlist; *actually runs the macro calls; 

现在,这可能是相当缓慢的,但它应该工作。更快将不会有720个数据集,但一个数据集,并使用FILEVAR =选项在数据步骤中写出代码。如果你有大量的变量(因为你必须写出一个put语句),这会变得有点困难,但即使如此,你也可以生成类似于我刚才使用的dictionary.columns的代码。这仍然会生成720个CSV,但速度更快,因为它避免了720个处理导出调用及其开销。