Парсинг больших XML - проблема |
Речь идет о размерах файлов 50-100 МБ. Проблема заключается в том, что парсер после нескольких секунд работы по парсингу XML и заносу в MYSQL базу зависает, и остается в памяти, отожрав 500-700 МБ оперативы, и при этом использует 0% CPU. Решается только kill-ом...
В цикле перебора регулярно делаю memory:compact - не помогает.
При размерах файолов 5-10 МБ все работает на ура.
Подозреваю, что не предусмотрено парсером такие размеры XML обрабатывать... Может кто подскажет мудрое решение? Может тулза есть какая, которая бъет XML на куски с сохранением структуры... Или другое средство для заноса инфы в базу из XML... |
|
Спасибо! Очень толково. А можно исходник Perl-скрипта? |
Можно попробовать использовать SAX-парсер XML'я. Бибилотеки есть для многих языков, например, для Питона. |
Здорово конечно, было бы круто если б он был встроен в Парсер :) а так... громоздко получится |
Проблему решил так |
| Написал на паскале прогу, которая бъет XML на куски с сохранением структуры :) Парсер вызывает wget, потом мой сплиттер - и после этого обрабатывает последоватьельно все куски. |