Разбор XML файла от 3 Гб на PHP или чём-то другом
Всем привет. Столкнулся с проблемой. Нужно вытянуть данные из большого XML файла (3.5 Гб), либо загрузить напрямую в MySQL или конвертировать из XML в CSV. Может программа есть какая? Или на PHP как-то?
Комментарии: 6
Программы точно нет. Я как-то пытался работать с 350-ти мегабайтным файлом от Ozon.ru. Почти ничего не смогло открыть такой файл. А уж про 3,5 ГБ я вообще молчу.
Целиком такой вряд ли можно открыть. Можно (и скорее всего, нужно) читать такой файл построчно, с помощью PHP или любого другого языка и как-то дробить либо на тыщу мелких файлов, парсить их и заливать в базу, либо еще как-то…
Целиком такой вряд ли можно открыть. Можно (и скорее всего, нужно) читать такой файл построчно, с помощью PHP или любого другого языка и как-то дробить либо на тыщу мелких файлов, парсить их и заливать в базу, либо еще как-то…
Я нашел пару программ, которые открыли файл, а в одной даже была функция конвертация в db и csv, но у меня все начинало виснуть жестко и это с ноутом в 4 ядра и 12Гб оперативки. А какими способами можно разбить на файлы поменьше не потеряв целостность данных?!
Меня всегда выручает пакет github.com/hoaproject/File, если нужно прочитать очень большие файлы.
На его базе этого класса и функции simplexml_load_string легко делается разбор XML файлов любых объемов. Естественно, готовых решений вам никто не даст, т.к. все пишется исключительно под задачу.
На его базе этого класса и функции simplexml_load_string легко делается разбор XML файлов любых объемов. Естественно, готовых решений вам никто не даст, т.к. все пишется исключительно под задачу.
Спасибо. Правильно ли я понимаю, что необходимо знать структуру XML, для того, чтобы файл распарсить?
А есть какие-то утилитки для терминала Linux чтоб переконвертировать XML в CSV?
А есть какие-то утилитки для терминала Linux чтоб переконвертировать XML в CSV?
Да, структуру знать нужно.
Утилит для конвертации не встречал.
Утилит для конвертации не встречал.
Меня всегда в таких сиутация выручает golang (https://golang.org/project/). Требует некоторого времени на изучение (хотя он простой как топор для таких задач), но с легкостью переваривает файлы и по 6 гигов.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.