Как записать большие файлы лога в mssql на python?
Есть файлы логов размером по 150 - 750 МБ.
Разделитель по ; и переносу строки.
Нужно прочитать их и записать в sql.
В данный момент делаю построчное чтение и запись, все хорошо даже статус бар прикрутил, но длится это часов 6.
Пробовал брать все записи и пихать 1м запросом при этом sql просто блочится, и используется большое колличество памяти.
Читал про pandas но не совсем уверен что это то что нужно.
Подскажите кто с опытом как правильнее сделать?
aglgl, доброго времени суток!
так сложно понять... выложи пример логов и скрипт, который генерит запросы
можно многопоточность прикрутить к скрипту
можно оптимизировать SQL-запрос
можно убрать лишние индексы из БД
можно убрать лишние данные/столбцы (вдруг в логах не все столбцы нужны/важны)
Вопрос в том, зачем? Зачем собирать такой большой лог и потом помещать его в БД? Вопрос в том, какая конечная цель всего действа. Возможно, действительно pandas решит задачу - но в чем задача?
Логи в базу доставлять можно другими средствами, в том числе и сами mysql (но это не точно, если нельзя, то непонятно зачем вообще эту базу использовать)
Может всё же переписать логи на более компактный вариант? Если это высер легаси то сделайте обработчик который сожмёт лог, либо вместо одномоментной задачи организуйте непрерывный конвейер по перегону данных в базу.
В MySQL есть команда LOAD DATA FROM LOCAL INFILE, в постгресе - похожая. Если там корректный формат CSV, то возможно удастся залить достаточно эффективно. Хотя конечно логи в БД - это не айс.