Привет!
Есть большой xml-файл (500-900МБ, 100-500 тысяч строк). Нужно его импортировать в Mysql.
1. Сначала я попробовал через XMLReader(). Но это недостаточно быстро.
2. Потом узнал о функции LOAD XML INFILE. Скорость великолепная. Но возникла проблема, приведу пример структуры xml-файла:
<items>
<item param1="val1">
<name>name_val</name>
<photo>photo1_val</photo>
<photo>photo1_val</photo>
<photo>photo3_val</photo>
</item>
</items>
Использую такой запрос:
LOAD XML INFILE '/file.xml'
INTO TABLE item
ROWS IDENTIFIED BY '<item>'
Все поля и параметры правильно заходят в БД, кроме 'photo'. В БД попадает только значение последнего блока 'photo3_val'.
Пробую так, но такой код не работает:
LOAD DATA INFILE '/file.xml'
INTO TABLE item
CHARACTER SET 'utf8'
LINES STARTING BY '<item>' TERMINATED BY '<\item>'
(@tmp)
SET
photo1 = ExtractValue(@tmp, '/photo[0]'),
photo2 = ExtractValue(@tmp, '/photo[1]'),
photo3 = ExtractValue(@tmp, '/photo[2]')
Подскажите правильное направление.
Спасибо!