SAS-导入日期分隔符和分隔符相同的文本文件

SAS-导入日期分隔符和分隔符相同的文本文件,sas,Sas,我收到了一些从SQL Server提取的文本文件,需要导入SAS。问题是分隔符是冒号“:” 该文件还包含日期时间字段,其中秒由同一分隔符分隔 我现在无法更改这些文件的文本文件提取过程,因为这些文件是回溯提取的 样本数据: ABCDEFGHI:2015-06-03 00:00:00.000:XYZ DEFGHI::XYZ GHIJ:2015-06-04 04:43:19.660:KLMN 由于变量具有不同的长度,我无法将其作为固定长度文件导入。我尝试将datetime字段导入单独的date、ho

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

该文件还包含日期时间字段,其中秒由同一分隔符分隔

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

样本数据:

ABCDEFGHI:2015-06-03 00:00:00.000:XYZ
DEFGHI::XYZ
GHIJ:2015-06-04 04:43:19.660:KLMN
由于变量具有不同的长度,我无法将其作为固定长度文件导入。我尝试将datetime字段导入单独的date、hour、minute和seconds字段,但某些记录中缺少日期,这意味着这些记录没有足够数量的分隔符


请帮忙。是否有任何方法可以将此文件成功导入SAS?

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

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

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

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::
;