我有一个很大的.csv文件(~2GB)可以在SAS中读取。不幸的是,文件中有一个非ascii字符,SAS在到达包含此字符的字段时停止导入。
为了指定字段的格式,我使用数据步骤INFILE来执行导入作业。我想知道是否有任何方法可以读取完整数据而忽略非ascii字符。
注意:我现在唯一的解决方法是首先导入SAS,获取错误消息并知道错误的确切位置,打开文件(等待10分钟),手动找到我找到的地方并删除该字符。显然它很麻烦,很难重复。
答案 0 :(得分:0)
快速思考。如果从_infile_压缩不可写字符,那么它可能有用吗?
data _null_;
infile file;
input;
_infile_=compress(_infile_,"","kw");
run;
之后你需要从_infile_变量创建变量。
答案 1 :(得分:0)
您需要转到UTF-8编码SAS会话,然后执行以下操作:
data txt;
infile intxt truncover encoding="UTF-8" lrecl=10000;
input line $10000.;
run;
显然,你可以做更多聪明的事情来正确加载csv,但我不知道如何使用utf-8。在查看任何datastep语句之前,SAS会停止读取这些特殊字符的文件。