2016-12-09 6 views
0

У меня огромный файл журнала ~ 4 ГБ. Я должен разбирать файл журнала по очереди, для каждой строки я должен запрашивать базу данных, а также подключаться к другим CSV-файлам и объединять данные из разных источников. Время исполнения составляет около 2 дней. Однако, к сожалению, по каким-либо причинам, таким как потерянное соединение с сервером MySQL во время запроса, я потерял весь синтаксический анализ до сих пор, и я должен запускать сценарий снова и снова. Затем, в течение последней недели, я выполнил этот скрипт несколько раз, и я потерял все предыдущие синтаксические разборки. сценарий должен был записать окончательный результат в файл csv. Я ищу решение, чтобы избежать этой проблемы, что я могу сделать? Есть ли способ сохранить последний статус процесса где-нибудь, чтобы я повторно выполнил из последней точки процесса, а не запускался с самого начала каждый раз? или любое другое решение, которое может избежать этого прерывания.Python db потерял соединение в середине обработки и разбор огромного файла журнала

+3

Моя идея: не загружать полную базу данных сразу, например, избрать 50 – Xevaquor

+0

Как это сделать, в каждой строке извлекается имя пользователя и они запрашивают db для извлечения информации о пользователе. У вас означает, что я сохраняю список имени пользователя и затем запрашиваю 50 имен пользователей ?! –

+0

Извините, непонятый вопрос (я знаю, что вы читаете из БД, а не сохраняете). Однако: возможно, вспомнить последний номер обработанной строки? Вы можете сохранить это число в файл и в случае аварийного возобновления из этой строки? Для файла csv было бы легко пропустить n строк – Xevaquor

ответ

0

Чтобы решить вышеуказанную проблему относительно выше обсуждение Я запросил один раз db, я держу его в качестве словаря, а затем каждый раз, когда я получу ключ в словаре. Это ускоряет выполнение времени, более потерянное соединение больше не повлияет на обработку. Я хотел бы упомянуть, что исполнение времени сокращено до 20 минут. Это невероятно!! Благодаря словарю ..

 Смежные вопросы

  • Нет связанных вопросов^_^