Insertar partes de un archivo de registro nginx en la base de datos (mysql)

Insertar partes de un archivo de registro nginx en la base de datos (mysql)

Quiero insertar algunas partes de mi archivo de registro en MySQL.
Este es mi archivo de registro:

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

En mi base de datos tengo las columnas[idLog] [date] [user] [module] [action] [doAjax] [ajaxAction]

Donde:
25/abr/2017--> fecha
usuariox --> usuario
m=xxx -->módulo
a=xxx -->acción
doajax=xxx-->doAjax
acción=xxx-->ajaxAction
idLog es incremento automático

Entonces necesito insertar en mi archivo de registro esa información:

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)

Quiero insertar la fecha que está en la cuarta columna y algunas partes de la solicitud que está en la séptima columna ( /userx/index.php?m=meeting&doajax=date&id=3) que están en mi base de fechas.
¿Algunas ideas?...

Intenté crear un script bash usando awky sedpara cortar algunas partes de mi archivo de registro e insertarlo en mi base de datos.

Respuesta1

Si la posición de los campos es constante, por ejemplo: si la fecha siempre está en el segundo campo. Luego puede usar el bucle for para procesar líneas de archivos y usar awk para obtener el campo requerido y asignarlo a una variable. Dentro del bucle, haga eco de la consulta de inserción con valores variables de fecha, etc. en un archivo... y finalmente ejecute todas las consultas de inserción de una vez.

información relacionada