2011-08-12 44 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#,这在文本处理上更好,并且能够更好地顺序处理数据。

相关问题