Разбор XML файла от 3 Гб на PHP или чём-то другом

Всем привет. Столкнулся с проблемой. Нужно вытянуть данные из большого XML файла (3.5 Гб), либо загрузить напрямую в MySQL или конвертировать из XML в CSV. Может программа есть какая? Или на PHP как-то?
SEQUEL.ONE
14 октября 2018, 13:03
modx.pro
1 898
0

Комментарии: 6

Дмитрий
14 октября 2018, 15:40
0
Программы точно нет. Я как-то пытался работать с 350-ти мегабайтным файлом от Ozon.ru. Почти ничего не смогло открыть такой файл. А уж про 3,5 ГБ я вообще молчу.
Целиком такой вряд ли можно открыть. Можно (и скорее всего, нужно) читать такой файл построчно, с помощью PHP или любого другого языка и как-то дробить либо на тыщу мелких файлов, парсить их и заливать в базу, либо еще как-то…
    SEQUEL.ONE
    14 октября 2018, 16:42
    0
    Я нашел пару программ, которые открыли файл, а в одной даже была функция конвертация в db и csv, но у меня все начинало виснуть жестко и это с ноутом в 4 ядра и 12Гб оперативки. А какими способами можно разбить на файлы поменьше не потеряв целостность данных?!
    Евгений Борисов
    14 октября 2018, 16:49
    2
    +2
    Меня всегда выручает пакет github.com/hoaproject/File, если нужно прочитать очень большие файлы.
    На его базе этого класса и функции simplexml_load_string легко делается разбор XML файлов любых объемов. Естественно, готовых решений вам никто не даст, т.к. все пишется исключительно под задачу.
      SEQUEL.ONE
      14 октября 2018, 16:53
      0
      Спасибо. Правильно ли я понимаю, что необходимо знать структуру XML, для того, чтобы файл распарсить?

      А есть какие-то утилитки для терминала Linux чтоб переконвертировать XML в CSV?
        Евгений Борисов
        14 октября 2018, 17:00
        0
        Да, структуру знать нужно.

        Утилит для конвертации не встречал.
      Іван Клімчук
      15 октября 2018, 10:24
      0
      Меня всегда в таких сиутация выручает golang (https://golang.org/project/). Требует некоторого времени на изучение (хотя он простой как топор для таких задач), но с легкостью переваривает файлы и по 6 гигов.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6