2013-09-27 89 views
0

我出口我的SAS表以CSV文件的形式到其他文件夾,我用不同的程序中使用此代碼的工作使用:導出CSV SAS表不能導入

PROC EXPORT data=CA_ISO_policyBYpolicy_&thestate. 
outfile="&whichfolder.CA_ISO_policyBYpolicy_&thestate..csv" 
dbms=dlm replace; 
delimiter=","; 
run; 

使用不同程序在不同的文件夾我試圖通過此代碼導入數據:

LIBNAME Home "/sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/" ;  
%let Filepath = /sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/; 

%sdwlogin; 
RUN; 

%let thestate = OR; 
%let policyyr = 2012; 

/*---- ISO_Compare ----*/ 
data Work.CA_ISO_policyBYpolicy_&thestate.; 

length Policy $10.; 

infile "&Filepath/CA_ISO_policyBYpolicy_&thestate..csv" DELIMITER=',' TERMSTR=CRLF  LRECL=2500 FIRSTOBS=2 MISSOVER DSD; 

input Policy; 
run; 

程序運行但我沒有收到數據。我縮短了變量列表以使代碼更易於閱讀。當我手動複製並將數據重新粘貼到另一個csv文件並將其重命名爲相同的「CA_ISO_policyBYpolicy_OR.csv」時,它會在我的程序中起作用。我加入這段代碼的最初理由是爲了擺脫手動過程...所以如果有人有任何提示,我會非常感激。

+1

爲什麼要使用CSV並返回?爲什麼不把SAS數據集保存到永久庫中? – Joe

+0

您最初是否使用CRLF創建csv文件?事實上,它在你保存之後起作用(我在Excel中猜測)似乎指向了這個方向。換句話說,是在Linux系統上運行的第一個程序?那麼你不想在導入時使用'TERMSTR = CRLF'選項 –

回答

0

正如喬在評論中所建議的,除非您因爲其他原因需要csv文件,否則最好爲此創建一個SAS數據庫。

另一種方式做,這將是proc import它幾乎你使用proc export以同樣的方式:

proc import datafile="&Filepath./CA_ISO_policyBYpolicy_&thestate..csv" 
    out=Work.CA_ISO_policyBYpolicy_&thestate. dbms=dlm replace; 
    delimiter=","; 
    getnames=yes; *this will create variable names from your first line; 
        *The opposite of what proc export did; 
run; 

我能想到的另一件事是:

%let Filepath = /sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/; 

可能會導致問題因爲forward slash.請嘗試像這樣:

%let Filepath = %str(/sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/); 

此外,sasdata目錄是否實際存在於根目錄下,還是sas程序所在的當前目錄的子目錄?如果是當前目錄,則需要丟失最初的正斜槓(或放在它的前面):

%let Filepath = %str(./sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/); 
+0

我需要csv文件進行圖形分析,因爲我還沒有擅長在SAS中進行圖形繪製。我錯誤地格式化了我的PROC IMPORT命令,所以這太棒了! –