2015-03-19 116 views
0

以下是從LOGPARSER該查詢:LOGPARSER TO_TIME輸出不匹配的SQL時間數據類型

查詢
logparser -i:Textline "SELECT TO_DATE(TO_TIMESTAMP(TRIM(EXTRACT_SUFFIX(text,0,'TIMESTAMP')),'M/d/yyyy'))AS DATE, TO_TIME(TO_TIMESTAMP(TRIM(EXTRACT_TOKEN(text,0,'(')),'H:mm:ss')) as TIME from 'C:\xxxx.log' where text like '%OUT:%' OR text like '%IN:%' OR text like '%TIMESTAMP%' OR text like '%DENIED%'" -o:datagrid 

輸出是:

​​

時,我想這個數據流向SQL表我出現以下錯誤:

QUERY:

logparser -i:Textline "select TO_DATE(TO_TIMESTAMP(TRIM(EXTRACT_SUFFIX(text,0,'TIMESTAMP')),'M/d/yyyy'))AS DATE, TO_TIME(TO_TIMESTAMP(TRIM(EXTRACT_TOKEN(text,0,'(')),'H:mm:ss')) as TIME INTO Ptclog from 'C:\ptclmgrd.log' where text like '%OUT:%' OR text like '%IN:%' OR text like '%TIMESTAMP%' OR text like '%DENIED%'" -o:SQL -server:KANNA\SQLEXPRESS -database:Flex -driver:"SQL Server Native Client 11.0" -username:sa -password:XXXXXX 

錯誤:

任務中止。 SQL表列「時間」的數據類型與SELECT子句項 「TIME」(類型時間戳)兼容

在SQLEXPRESS所選擇的數據類型是

time(0).

,如果我的數據流給列選擇數據類型爲:

"datetime"

但是這會在時間前添加一個默認日期,這是令人討厭的。例如時間顯示爲:

DATE  TIME 
2015-02-06 2015-01-01 03:12:40.000 
NULL  2015-01-01 07:55:49.000 
NULL  2015-01-01 06:46:50.000 
NULL  2015-01-01 06:55:40.000 
NULL  2015-01-01 01:57:25.000 
NULL  2015-01-01 02:36:41.000 

有沒有辦法在sql express 2014 DB中以hh:mm:ss格式表示時間?

以下是在日誌文件中的樣本條目被查詢:

3:12:40 (lmgrd) TIMESTAMP 2/6/2015 
3:13:37 (ptc_d) OUT: "PROE_Flex3CG" [email protected] 
3:18:22 (ptc_d) OUT: "PROE_Flex3C" [email protected] 
3:21:18 (ptc_d) OUT: "PROE_Flex3C" [email protected] 
3:21:32 (ptc_d) OUT: "PROE_Flex3C" [email protected] 
3:24:19 (ptc_d) IN: "PROE_Flex3CG" e1cx[email protected] 
3:26:02 (ptc_d) OUT: "PROE_Flex3C" [email protected] 
3:26:46 (ptc_d) OUT: "PROE_Flex3C" [email protected] 
3:26:48 (ptc_d) OUT: "26" [email protected] 
3:26:48 (ptc_d) OUT: "10114" [email protected] 
4:34:39 (ptc_d) DENIED: "26" [email protected] (Licensed number of users already reached. (-4,342:10054 "")) 

回答

0

不幸的是沒有,LOGPARSER的不支持時間的日類型。您可以嘗試將您的DATE和TIME列作爲單個Datetime發送到一起,或將TIME列作爲字符串發送,並希望SQL Server將其轉換爲Time ...

+0

感謝Gabriele。我曾經想過To_TIME會做到這一點。在純時間戳前添加日期字段非常具有挑戰性。在這種情況下,日期也有一些奇怪的格式,間隔時間爲6小時。但是,「當你向它低頭時,挑戰只會成爲障礙。」 – 2015-03-22 11:46:15