내 로그 파일의 일부를 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]
여기서:
2017년 4월 25일--> 날짜
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)
/userx/index.php?m=meeting&doajax=date&id=3
내 날짜 베이스에 있는 4번째 열의 날짜와 7번째 열( )인 요청의 일부 부분을 삽입하고 싶습니다 .
어떤 아이디어?...
내 로그 파일의 일부를 잘라내어 데이터베이스에 삽입하기 위해 awk
and for 를 사용하여 스크립트 bash를 만들려고 했습니다.sed
답변1
필드 위치가 일정한 경우(예: 날짜가 항상 두 번째 필드에 있는 경우) 그런 다음 for 루프를 사용하여 파일 행을 처리하고 awk를 사용하여 필수 필드를 가져와 변수에 할당할 수 있습니다. 루프 내에서 날짜 등의 변수 값이 포함된 삽입 쿼리를 파일에 에코하고 마지막으로 모든 삽입 쿼리를 한 번에 실행합니다.