我收到了一些从SQL Server中提取的文本文件,需要导入SAS。问题是分隔符是冒号':'
此文件还包含日期时间字段,其中秒由相同的分隔符分隔。
我现在无法更改文本文件提取程序,因为这些文件是回溯提取。
示例数据:
ABCDEFGHI:2015-06-03 00:00:00.000:XYZ
DEFGHI::XYZ
GHIJ:2015-06-04 04:43:19.660:KLMN
由于变量的长度不同,我无法将其作为固定长度文件导入。我尝试将日期时间字段导入单独的日期,小时,分钟和秒字段,但某些记录中缺少日期,这意味着这些记录将没有足够数量的分隔符。
请帮忙。有什么办法可以将这个文件成功导入SAS吗?
答案 0 :(得分: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;
但是如果你只有一个可以包含额外分隔符的字段,并且当该字段不为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::
;