Inserir partes de um arquivo de log nginx no banco de dados (mysql)

0

Eu quero inserir algumas partes do meu arquivo de log no mysql.
este é meu arquivo de log

195.xx.x.x - - [25 / abr / 2017: 09: 60: xx +0200] "POST /userx/index.php?m=contacts&a=form& ...

192.xx.xx - - [25 / abr / 2017: 09: 45: xx +0200] "POST /usuário/index.php?m=customer&doajax=request&action=getContacts...

197.xx.x.x - - [25 / abr / 2017: 09: 20: xx +0200] "GET /userx/index.php?m=meeting&doajax=date&id=3

No meu banco de dados eu tenho as colunas [idLog] [data] [usuário] [módulo] [ação] [doAjax] [ajaxAction] Onde:
25 / abr / 2017 - > data de
userx - > usuário
m = xxx - > module
a = xxx - > action
doajax = xxx - > doAjax
ação = xxx - > ajaxAction
idLog é incremento automático

Então eu preciso inserir minhas informações no arquivo de log:
INSERT INTO registra VALUES ('null', 25/04/2017, usery, contatos, form, null, null)
INSERT INTO registra VALORES ('null', 25/04/2017, usery, customer, null, request, getContacts)
INSERT INTO registra VALUES ('null', 25/04/2017, userz, encontro, null, data, nulo)

Eu quero inserir a data que está na quarta coluna e algumas partes da solicitação que é a 7ª coluna (/userx/index.php?m=meeting&doajax=date&id=3)que estão na minha data base.
Algumas ideias?... Eu tentei criar um script bash usando o awk e o sed para cortar algumas partes do meu arquivo de log e para inserir na minha base de dados

    
por Sara Quispe 26.04.2017 / 10:44

1 resposta

0

Se a posição dos campos for constante, por exemplo: se a data estiver sempre no 2º campo. Em seguida, você pode usar o loop para processar linhas de arquivo e usar o awk para obter o campo necessário e atribuir a uma variável. Dentro do loop, ecoa a consulta de inserção com valores variáveis de data etc para um arquivo .. e, finalmente, execute toda a consulta de inserção em uma vez.

    
por 27.04.2017 / 05:01

Tags