@Gudzera

Как сделать импорт данных с xml файла в базу mysql?

Привет всем тостам с корочкой) Я Гура, но к большому сожалению далеко не гуру.. Возникла потребность найти очередное решение.

Есть xml файл (epg tv) структура которого:
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE tv SYSTEM "...">
<tv generator-info-name="TVH_W/0.751l" generator-info-url="....">
<programme start="20151026074500 +0300" stop="20151026080000 +0300" channel="958">
<title lang="ru">Текст текст текст</title>
</programme>
.
.
.
<programme start="20151026080000 +0300" stop="20151026081000 +0300" channel="958">
<title lang="ru">Текст текст текст </title>
</programme>
</tv>


Объем такого файла составляет 38МБ (это где то 17 000 записей).

Есть потребность вносить информацию в базу mysql раз в неделю. Сейчас есть 2 решения:
  1. simple_html_dom - Где в цикле буду вносить в базу информацию, что создаст большую нагрузку на базу данных.
  2. И LOAD XML LOCAL INFILE:
    LOAD XML LOCAL INFILE 'tv.xml'
      INTO TABLE test
      ROWS IDENTIFIED BY '<programme>' 
    SET start=DATE_FORMAT(LEFT(start, 14),'%Y-%m-%d %H:%i'), 
    stop=DATE_FORMAT(LEFT(stop, 14),'%Y-%m-%d %H:%i'), title=SUBSTRING_INDEX(title, ' (', 1);
    - но такой вариант вообще выбивает базу из строя, я так думаю из-за количества вносимой информации


Есть мысль, что если сделать, что то типа sql dump файла и загружать подобно "Импорту" в PHPmyadmin? Мужики посоветуйте что нибудь, на более-менее понятном языке для самоучки.
  • Вопрос задан
  • 2671 просмотр
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
При добавлении такого объёма данных можно временно отключать индексы, чтобы они не перестраивались при добавлении каждой строки. Если сделаете дамп базы через mysqldump, то увидите перед вставкой данных команду ALTER TABLE ... DISABLE KEYS, после вставки - ALTER TABLE ... DISABLE KEYS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы