Введите информацию из файла LOG в MySQL, используя Python - PullRequest
2 голосов
/ 20 января 2011

Мне нужно взять лог-файл linux и ввести данные в таблицу mysql и разделить каждое поле на столбцы.Я пытался использовать команду LOAD DATA INFILE.Единственная проблема заключается в том, что данные не разделены, и я не могу TERMINATE FIELDS BY '', поскольку файл содержит пробелы в сообщении журнала.Если у кого-то есть идеи, пожалуйста, сообщите мне

Пример файла:

2011-01-17 10:18:20 Пользователь xxxxxx запросил резервную копию xxxxx (xxxxx)

2011-01-17 10:18:29 Остановка текущего полного xxxxxx, запроса от backuppc (backoff =)

2011-01-17 10:18:33 Пользователь xxxxxx запросил резервное копирование xxxxxx (xxxxxx)

2011-01-17 10:18:51 Резервное копирование отменено на xxxxxx (принятый сигнал = ALRM)

2011-01-17 10:18:52 Запущено полное резервное копирование на xxxxxx (pid = xxxxxx,share = xxxxxx $)

2011-01-17 10:24:18 Запущено полное резервное копирование на xxxxxx (pid = xxxxxx, share = xxxxxx $)

2011-01-17 11:00: 01 Следующее пробуждение 2011-01-17 12: 00: 01

2011-01-17 12:00:03 Следующее пробуждение 2011-01-17 13: 00: 00

2011-01-17 13:00:01 Следующее пробуждение 2011-01-17 14: 00: 00

1 Ответ

1 голос
/ 23 января 2011

Предварительно отформатируйте этот файл.Я предполагаю, что пустых строк в вашем файле нет (в противном случае вы можете удалить их, используя закомментированный код).Допустим, вы используете python:

parsed = open("parsed.txt", 'a')                                                                                                                                        
    with open("log.txt") as f:                                                                                                                                              
    for i, line in enumerate(f):
        # use if your lines have spaces in between
        # if i % 2 == 0:                                                                                                                                                      
        parsed.write(line.replace(" ",",",2))

Предоставляя вам файл вроде:

2011-01-17,10:18:20,User xxxxxx requested backup of xxxxx (xxxxx)                                                                                                                                                                                                                                                                                                                                                                   
2011-01-17,10:18:52,Started full backup on xxxxxx (pid=xxxxxx , share=xxxxxx$)                                                                                                                                                                                                                                                               
2011-01-17,10:24:18,Started full backup on xxxxxx (pid=xxxxxx , share=xxxxxx$) 
...                                                                                        

Теперь вы можете:

LOAD DATA INFILE 'parsed.txt' INTO TABLE db.my_table;
...