2017-04-19 93 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:: 
;