外部导入数据如何设置变量的长度

前两天在工作中遇到一个问题,在使用PROC IMPORT导入数据的时候,数据发生了截断,代码如下:
proc import datafile="文件路径"out=Mydata dbms=xlsx replace;
    getnames=no;
/*    guessingrows=max;*/
run;
在以前做外部导入的时候都会用到guessingrows=max,就不会出现数据截断的情况,guessingrows的作用是指定读取文件的前多少行数据,用来判断变量的类型和长度,如果不指定,默认值是20,最大值是2147483647 (或者用MAX代替)。在本次导入的时候加上guessingrows=max语句程序会报错,所以就把这段代码注释掉了,就出现变量截断的情况。后来把xlsx文件转换成csv格式就可以用guessingrows语句,上一篇文章我们说到csv格式的兼容性更好,所以之前报错的原因可能是编码、格式、兼容性方面的原因。
除了转换文件格式有没有其他的办法呢?答案是:有的。在proc import中是无法指定变量的长度的,但是可以在data步中使用infile语句导入外部数据,代码如下:
DATA Mydata;/*设置数据名称*/
  LENGTH name $ 50;/*设置该变量的字符长度*/
  INFILE "C:\Users\Administrator\Desktop\Class2023.xlsx";
  /*列出变量名*/
  INPUT id name $ sex $ age;
run;
使用infile语句的时候需要用input语句把所有要导入的变量及变量类型列出来,所以不适合变量特别多的时候使用。




请前往:http://www.mark-to-win.com/TeacherV2.html?id=166