2011-08-12 39 views
0

我建立一個TSQL查詢通過從FileZilla中一個FTP日誌解析。我試圖找出是否有辦法從當前行之前的行中獲取信息?TSQL從同一表中的另一行獲取信息?

例如, 我已經分析出以下過程:「STOR的file.exe」

隨着FileZilla是不說,如果STOR沃斯成功,直到下一行。所以我想檢查下一行,看看STOR是成功還是不成功?

而且人們可以嘗試STOR一個文件多次,所以我想它的地位的最後一個版本。

實例信息從日誌文件:

(000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> STOR file.exe 
    (000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> 150 Opening data for transfer. 
    (000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> 226 Transfer OK 

我想補充我的查詢一欄,指出STOR是成功還是不成功。

謝謝!

+2

不知道是否有更好的方式來做到這一點,但也許插入日誌行號,然後從當前分析往回走,以確保所有相關的信息相匹配,並檢查該組中的第一STOR? –

+1

你是否把這個表放成一個大字符串? –

+0

最初,我將每行作爲字符串導入到表中。之後,我打破了我需要的有用信息。 – buzzzzjay

回答

2

假設你已經解析這些行成實際列,並且具有SQL Server 2005或更高版本。您可以在下面使用CROSS APPLY示例查詢(未經測試)。我希望這有幫助。

select o.*, prev.* 
from FTPLog o 
cross apply 
(
    select top 1 * 
    from FTPLog P where P.LogDate < O.LogDate 
    order by LogDate DESC 
) prev 
1

詹姆斯有正確的想法,雖然可能有一些問題,如果你曾經有完全相同的日誌日期(從您的樣品,它看起來像你可能)。您可以在數據插入時添加標識列來強制執行訂單,然後您可以在標識列上使用James的概念。不是,雖然

更多,TSQL可能不是這個項目的最佳選擇,至少不是本身。雖然有些技巧可以用來順序迭代,但它不如某些其他語言那麼好。您可能需要考慮在工具中解析您的文件,例如Python或Perl甚至C#,這在文本處理上更好,並且能夠更好地順序處理數據。

相關問題