Log Parser是一款很不错的IIS日志分析工具,之前也一直使用,主要对IIS 日志(Log)汇总和报表。但是却从没有利用它将IIS日志完整的导入到数据库这一功能。
这两天,公司需要对一个站点某一天的IIS日志(Log)进行详细分析,出一些详细PV、IP 还有许多自定义的报表,最后想了想,也只能将这些日志导入到数据库(Sql Server 2005)中汇总了。由于这一天站点的PV是500W左右,IIS 日志记录有 600W左右,最后整理了下思路,决定采用 Log Parser 将IIS 日志导入到数据库中.
打开 Log Parser 的帮助,在 Log Parser - > Reference - > Output Formats - > SQL - > Examples 找到了相应的操作,如下:
可是按照帮助上的例子,导入了将近一个小时也没有成功,最后,没办法,google 半天,找到了正确的命令:
之后开始了导入工作。利用 logparser 将 IIS Log(IIS 日志) 导入到 Sql Server,总体来说非常不错,十分简单,就是速度不是十分的快,算了下,大概一秒只能导入 1200 条 记录左右,当然,这也和我的电脑配置有关系的。建议,导入前,先进行排除下,比如,排除掉 .jpg 或者 其他格式结尾的页面
------------------------------------------------------------------------------------------------
s
logparser "SELECT TO_LOCALTIME(TO_TIMESTAMP([date], [time])) AS LOCALTIME, [s-sitename], [s-computername], [s-ip], [cs-method], [cs-uri-stem], [cs-uri-query], [s-port], [cs-username], [c-ip], [cs-version],[cs(User-Agent)], [cs(Cookie)], [cs(Referer)], [cs-host], [sc-status], [sc-substatus], [sc-win32-status], [sc-bytes], [cs-bytes], [time-taken] INTO IISLog FROM D:\IISLog\u_ex09073118.log WHERE TO_LOWERCASE (EXTRACT_EXTENSION(cs-uri-stem)) NOT IN ('gif';'jpg';'png';'bmp';'ico';'axd')" -oConnString:"Driver={SQL Server}; Server=.\SQLEXPRESS; Database=IISLog ;Trusted_Connection=yes;" -ignoreMinWarns:OFF
如果不使用Trusted_Connection=yes連線方式,可指定:-username:uname -password:passwd-createTable:OFF
藍色 的地方,利用 TO_TIMESTAMP 函數將 Date 與 Time 合併成一個 Datatime 型態的欄位。再利用 TO_LOCALTIME 函數,將 IIS Log 內的 UTC 時間,轉換成本地時間 (GMT +8)。
紅色 的地方,依照自己的設定環境加以更換。