我正在尝试导入一个文本文件,该文件只是将列名用制表符分隔,但文件中没有记录一天。
以下是逻辑:
proc import file="/saslocation/Current_Day_Records.txt" out=WORK.VENDOR_RECORDS_BY_DAY
dbms='09'x replace
;run;
记录:
NOTE: Unable to open parameter catalog: SASUSER.PARMS.PARMS.SLIST in update mode. Temporary parameter values will be saved to
WORK.PARMS.PARMS.SLIST.
Unable to sample external file, no data in first 5 records.
ERROR: Import unsuccessful. See SAS Log for details.
非常感谢您解决错误的任何帮助。
文件中的标题数据: Dealer_id date Dealer_Sr Dealer_Quote Approved_Quotes Approval_Rate Dealer_Dues
答案 0 :(得分:3)
我认为您无法以这种方式导入它,因为SAS会搜索数据以设置列类型/格式。如果没有要查看的数据,则无法将列设置为数字/字符。
更好的方法是明确告诉SAS如何使用infile和输入语句创建列:
filename textdata 'saslocation\Current_Day_Records.txt';
data VENDOR_RECORDS_BY_DAY ;
infile textdata delimiter='09'x MISSOVER DSD lrecl=32767 firstobs=2 ;
input
Dealer_id :8.
date :DATE9.
Dealer_Sr :$200.
Dealer_Quote :$200.
Approved_Quotes :$200.
Approval_Rate :8.
Dealer_Dues :8.
;
run;
我只是这样写,因为我假设你最终可能会在该文本文件中有数据并需要以这种方式导入..但实际上,如果你只是你根本不需要infile语句需要一个仅包含标题信息的数据集的空白shell。如果这就是您所需要的,并且您拥有要将其设置为的列名和属性的完整列表,则可以使用proc sql或没有infile语句的数据步骤轻松完成。
proc sql;
create table VENDOR_RECORDS_BY_DAY
(
Dealer_id num
, date num format=date9.
, Dealer_Sr char(200)
, Dealer_Quote char(200)
, Approved_Quotes char(200)
, Approval_Rate num
, Dealer_Dues num
);
quit;
要添加的编辑:如果您真的需要文本文件中的列名(可能有100个列名或变量列名),那么您可以使用getnames = no;
和datarow=1;
执行proc import语句添加了语句,然后按照与此类似的方法获取第一行数据并将其重置为列名:https://communities.sas.com/message/122471#122471