2013-06-21 79 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個處理導出調用及其開銷。