我想将日志文件的某些部分插入到 mysql 中。
这是我的日志文件:
195.xx.x.x - - [25/Apr/2017:09:60:xx +0200] "POST /userx/index.php?m=contacts&a=form&...
192.xx.x.x - - [25/Apr/2017:09:45:xx +0200] "POST /usery/index.php?m=customer&doajax=request&action=getContacts...
197.xx.x.x - - [25/Apr/2017:09:20:xx +0200] "GET /userx/index.php?m=meeting&doajax=date&id=3
在我的数据库中我有列[idLog] [date] [user] [module] [action] [doAjax] [ajaxAction]
其中:
25/Apr/2017-->日期
userx-->用户
m=xxx-->模块
a=xxx-->action
doajax=xxx-->doAjax
action=xxx-->ajaxAction
idLog是自动递增的
所以我需要在日志文件中插入该信息:
INSERT INTO logs VALUES('null',25/04/2017,usery,contacts,form,null,null)
INSERT INTO logs VALUES('null',25/04/2017,usery,customer,null,request,getContacts)
INSERT INTO logs VALUES('null',25/04/2017,userz,meeting,null,date,null)
我想插入第 4 列上的日期以及/userx/index.php?m=meeting&doajax=date&id=3
我的日期库中第 7 列 ( ) 的请求的某些部分。
一些想法?...
awk
我尝试使用和for创建一个脚本 bashsed
来剪切日志文件的某些部分并插入到我的数据库中
答案1
如果字段位置恒定,例如:如果日期始终位于第二个字段中。然后您可以使用 for 循环处理文件行并使用 awk 获取所需字段并分配给变量。在循环内将带有日期等变量值的插入查询回显到文件中。最后一次执行所有插入查询。