SAS INFILE如何在忽略非ascii字符的同时读取完整数据?

时间:2015-03-02 14:35:22

标签: sas

我有一个很大的.csv文件(~2GB)可以在SAS中读取。不幸的是,文件中有一个非ascii字符,SAS在到达包含此字符的字段时停止导入。

为了指定字段的格式,我使用数据步骤INFILE来执行导入作业。我想知道是否有任何方法可以读取完整数据而忽略非ascii字符。

注意:我现在唯一的解决方法是首先导入SAS,获取错误消息并知道错误的确切位置,打开文件(等待10分钟),手动找到我找到的地方并删除该字符。显然它很麻烦,很难重复。

2 个答案:

答案 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会停止读取这些特殊字符的文件。