当我尝试读取包含地址字段的'〜'分隔文件时,我的PROC IMPORT步骤会导致“导入失败” . 在CSV文件中,5字节的邮政编码会被自动视为数字字段,偶尔我会收到包含无效邮政编码的错误数据记录为VXR1 @ . 遇到这种情况时,我收到“导入失败”错误,SAS作业失败 . PROC IMPORT会自动转换为带有infile的DATA步骤 . 所以我尝试使用INFILE选项的DATA步骤以及INFORMATS和FORMATS,并将ZIP的FORMAT更改为字母数字 . 但我现在遇到了不同的问题 . 使用DATA,INFORMAT和FORMAT关键字,长度不匹配正在发生,数据将自动移动到不同的位置 . 有人可以帮我找出解决这个问题的方法吗?
包含的PROC IMPORT我使用了以及以下使用的DATA文件步骤作为参考:
data WORK.TRADER_STATS ;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */
infile '/sascode/test/TRADER_STATS.csv' delimiter = '~' MISSOVER DSD lrecl=32767 firstobs=2 ;
informat TRADER_id best32. ;
informat dealer_ids $60. ;
informat dealer_name $27. ;
informat dealer_city $15. ;
informat dealer_st $2. ;
informat dealer_zip $5. ;
informat SNO best32. ;
informat start_dt yymmdd10. ;
informat end_dt yymmdd10. ;
input
TRADER_id
dealer_ids $
dealer_name $
dealer_city $
dealer_st $
dealer_zip
sno
start_dt
end_dt
;
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
run;
proc import file="/sascode/test/TRADER_STATS_BY_DAY.csv" out=WORK.TRADER_STATS_BY_DAY
dbms=dlm replace;
delimiter='~';
;run;
1 回答
尝试使用: colon operator,这将告诉SAS使用提供的信息但是在遇到分隔符时停止读取此变量的值,这将解决您的问题 - 数据自动移动到不同的位置