Как вариант можно зачитать сначала XML, потом конвертнуть его в массив. и сохранить, потом например slice-нуть массив на 5 частей, и итерациями это всё обработать. Т.е. будет 2 воркера: один конвертит файл в массив, второй обрабатывает массивы и кладёт их в БД. Это позволяет парсить достаточно большие файлы, но если файл оооочень большой (не влазит в оперативку), тогда вот тут описано неплохое решение:
stackoverflow.com/questions/911663/parsing-huge-xm...