2017-04-19 124 views
0

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

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

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

示例数据:

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

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

请帮忙。有什么办法可以将这个文件成功导入SAS?

回答

0

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

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