免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2782 | 回复: 3
打印 上一主题 下一主题

解析日志文件(200M),然后插入MYSQL数据库中,求大家指点,perl程序编写。多谢! [复制链接]

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-27 06:20:00程序设计版块每日发帖之星
日期:2016-03-03 06:20:00数据库技术版块每日发帖之星
日期:2016-05-06 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-02-26 15:13 |只看该作者 |倒序浏览
恳请大家帮帮忙,时间比较紧,我对perl也不怎么会,用shell写好了,领导一定让用perl。求帮助
目标,把日志中的字段解析出来,并对第四个字段中的WT.cg_page和WT.cg_onclick也单独保存在mysql库中的表。

日志sdc_02_17_2016(2).log:每个日志文件大概200M左右,日志行数10万行左右。每天有6个这样的不同的日志。
#Remark: DCS-p
#Software: WebTrends Data Collector         
#Version: 1.0
#Date: 2016-02-06 08:56:35
#Fields: date time c-ip  cs-uri-stem
2016-02-17 07:05:54 210.10.22.6  /NetCar/chehao.onclick agentId=&WT.cg_page=基本信息&WT.cg_onclick=测试号码
2016-02-17 07:05:54 21.13.33.6   /NetCar/chehao.onclick agentId=&WT.cg_page=基本信息&WT.cg_onclick=测试号码
2016-02-17 07:05:55 213.112.44.6 /NetCar/chehao.onclick agentId=&WT.cg_page=基本信息
2016-02-17 07:05:55 211.14.55.6   /NetCar/chehao.onclick agentId=&WT.cg_page=基本信息&WT.cg_onclick=测试
.....

通过shell程序,解析日志中数据,并插入mysql数据库,5万条数据大概插入1个小时,效率比较低,还需大家帮忙能否帮写个perl的程序,多谢大家。

#!/bin/sh
a="sdc_02_17_2016(2).log"
HOSTNAME="10.22.0.17"
PORT="3306"
USERNAME="test"
PASSWORD="test"
DBNAME="dbtest"
TABLENAME="tabletest"

sed -i '/^#/d' $a

FILE="${TABLENAME}.sql"
rm -f $FILE

echo "insert into ${TABLENAME}(dateid,times,ip,uristem,cg_page,cg_onclick,createdate) values "> $FILE

while read c1 c2 c3 c4
do

if [ "$c4" = "cs-uri-stem" ]; then
continue
fi

cg_page=$(echo $c4|grep -oP '(?<=WT.cg_page=)[^&]*')
cg_onclick=$(echo $c4|grep -oP '(?<=WT.cg_onclick=)[^&]*')
echo "('"$c1"','"$c2"','"$c3"','"$c4"','"$cg_page"','"$cg_onclick"',now())," >> $FILE

done <$a

sed -i '$s/,$/;/' $FILE
mysql --default-character-set=utf8  -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} <  "$FILE"

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
2 [报告]
发表于 2016-02-26 17:54 |只看该作者
新手的话也就不推荐DBD了。
换成perl无非是把shell壳子换成perl壳子。
单条入就这个水平了,要快可以处理为csv文件,直接load data,不要写sql文件

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-27 06:20:00程序设计版块每日发帖之星
日期:2016-03-03 06:20:00数据库技术版块每日发帖之星
日期:2016-05-06 06:20:00
3 [报告]
发表于 2016-02-26 18:18 |只看该作者
换个壳子也可以啊。能帮我吗?回复 2# laputa73


   

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
4 [报告]
发表于 2016-03-01 01:45 |只看该作者
本帖最后由 RE_HASH 于 2016-03-01 01:45 编辑

建议把标题上的“指点”改为“代工”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP