导出的csv SAS表无法导入

时间:2013-09-27 18:17:31

标签: csv sas

我以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 个答案:

答案 0 :(得分:0)

正如Joe在评论中所建议的,除非您出于其他原因需要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/);