Я хочу вставить некоторые части моего файла журнала в 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--> date
userx --> user
m=xxx -->module
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-м столбце, и некоторые части запроса, которые находятся в 7-м столбце ( /userx/index.php?m=meeting&doajax=date&id=3
), которые находятся в моей базе данных.
Какие-нибудь идеи?...
Я попытался создать скрипт bash, используя awk
и sed
для того, чтобы вырезать некоторые части моего файла журнала и вставить их в мою базу данных.
решение1
Если позиция полей постоянна, например: если дата всегда во 2-м поле. Тогда вы можете использовать цикл for для обработки строк файла и использовать awk для получения требуемого поля и назначения переменной. Внутри цикла вывести запрос на вставку с переменными значениями даты и т. д. в файл.. и, наконец, выполнить все запросы на вставку за один раз.