【问题标题】:SAS - Import text file where date separator and delimiter are sameSAS - 导入日期分隔符和分隔符相同的文本文件
【发布时间】:2017-04-19 02:00:58
【问题描述】:

我收到了一些从 SQL Server 中提取的文本文件,需要导入 SAS。问题是分隔符是冒号 ':'

此文件还包含日期时间字段,其中秒由相同的分隔符分隔。

我现在无法更改这些文件的文本文件提取过程,因为这些文件是过时的提取。

样本数据:

ABCDEFGHI:2015-06-03 00:00:00.000:XYZ
DEFGHI::XYZ
GHIJ:2015-06-04 04:43:19.660:KLMN

由于变量的长度不同,我无法将其作为固定长度文件导入。我尝试将日期时间字段导入单独的日期、小时、分钟和秒字段,但某些记录中缺少日期,这意味着这些记录没有足够数量的分隔符。

请帮忙。有什么方法可以将此文件成功导入 SAS 吗?

【问题讨论】:

    标签: sas


    【解决方案1】:

    首先,返回源并请求他们以可用格式导出文件。如果他们无法解决,请询问他们是否可以将问题字段移到行尾。

    data want ;
       infile 'myfile.txt' dsd dlm=':' truncover ;
       length var1 $20 var2 $8 datetime 8 ;
       input var1 var2 datetime anydtdtm23. ;
       format datetime datetime24.3 ;
    run;
    

    但是,如果您只有一个可以包含额外分隔符的字段,并且当该字段不为空时出现的定界符数量是固定的,或者当不为空时长度是固定的,那么您应该能够围绕该问题进行编程。

    因此,在您的示例中,您可以将最后两个字段读入一个字符变量,然后自己解析它。

    data want ;
       infile cards dsd dlm=':' truncover ;
       length var1 $20 datetime 8 var2 $8 ;
       input var1 str $50.;
       var2 = scan(str,-1,':');
       datetime = input(substrn(str,1,length(str)-length(var2)-1),anydtdtm.);
       format datetime datetime24.3 ;
    cards;
    ABCDEFGHI:2015-06-03 00:00:00.000:XYZ
    DEFGHI::XYZ
    GHIJ:2015-06-04 04:43:19.660:KLMN
    A::
    ;
    

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2015-04-05
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      相关资源
      最近更新 更多