文件中不存在数据时SAS导入失败

文件中不存在数据时SAS导入失败,sas,Sas,我正在尝试导入一个文本文件,该文件的列名由制表符分隔,但文件中一天没有记录 下面是逻辑: 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

我正在尝试导入一个文本文件,该文件的列名由制表符分隔,但文件中一天没有记录

下面是逻辑:

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.
日志:

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.
非常感谢您为解决此错误提供的任何帮助

文件中的头数据:
经销商id日期经销商Sr经销商批准报价批准费率经销商费用我认为您无法以这种方式导入,因为SAS搜索数据以设置列类型/格式。如果它没有要查看的数据,则无法将列设置为numeric/character

更好的方法是明确告诉SAS如何使用infle和input语句创建列:

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;
我之所以这样写,是因为我假设您最终可能在该文本文件中有数据,并且需要以这种方式导入。。但实际上,如果您只需要一个只有标题信息的数据集的空白外壳,则根本不需要infle语句。如果这就是您所需要的,并且您有完整的列名称和属性列表,您可以使用proc sql或不使用infle语句的数据步骤轻松地进行设置

    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执行proc import语句
datarow=1语句,然后按照类似的方法获取第一行数据并将其重置为列名:

如果您已经知道列名,为什么需要这样做?非常感谢。它在两种情况下都非常有效。当有800条记录,文件为空时。@NagaVemprala太棒了!很乐意帮忙。