Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг XML и обновление БД, 250.000 записей 
:(
    Опции темы
Error202
  Дата 21.2.2012, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Есть XML файл товаров ~ 300Mb
Задача распарсить, перебрать товары...

Я использую XML::Twig для этого, в момент перебора товаров смотрю бд на наличие, если нет, добавляю и
если есть какие-нть изменения - обновляю...

Вся процедура занимает n*k часов выжирает всю память сервера начисто...

Что я делаю неправильно и как можно решить подобную задачу, чтобы сервер во время обновления остался работоспособным?

PM MAIL WWW   Вверх
MaXL
Дата 21.2.2012, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Может быть как-то порезать XML на части, если это возможно.


--------------------
MaXL
PM MAIL   Вверх
ginnie
Дата 21.2.2012, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Error202, XML::Twig можно использовать по-разному, Вы грузите весь файл в память или используете вариант, описанный в разделе "Processing an XML document chunk by chunk" документации?
Я раньше тоже использовал XML::Twig, потом перешел на XML::Parser, он побыстрее, но требует большего объема кода и немного сложнее. У меня файлы побольше, например, книжный прайс с ozon.ru - 1.76 Гб, books.ru - 849 Мб, my-shop.ru - 830 Мб, остальные поменьше.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Error202
Дата 21.2.2012, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



MaXL, попробую, посмотрю, спасибо

ginnie, я видел Ваши сообщения на эту тему в поиске, видел что Вы пришли к XML::Parser... 
smile я мучаю как раз книжный прайс, но с лабиринта...

Если Вас не затруднит, не могли бы Вы показать какой-нть небольшой примерчик использования XML::Parser для этих целей...?



Это сообщение отредактировал(а) Error202 - 21.2.2012, 11:41
PM MAIL WWW   Вверх
ginnie
Дата 21.2.2012, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Error202, посмотрите мой парсер для Лабиринта (прикреплен к сообщению). Парсер обрабатывает не все поля, а только те, которые мне нужны. Возникнут вопросы - задавайте (я, правда, писал его пару лет назад, но надеюсь, вспомню что там к чему :о)

Это сообщение отредактировал(а) ginnie - 21.2.2012, 11:53

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  labirint.pl 10,20 Kb


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Error202
Дата 21.2.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Спасибо!!
PM MAIL WWW   Вверх
ginnie
Дата 21.2.2012, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Error202, нашел еще вариант на XML::Twig, выкладываю для разнообразия (возможно он под старый XML-формат, но для понимания способа обработки подойдет).

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  labirint_twig.pl 5,03 Kb


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Error202
Дата 28.2.2012, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



При парсинге, где-то на серидине XML возникает ошибка:

not well-formed (invalid token) at

Видимо где-то в файле есть данные в неверной кодировке.

Можно ли как-то пропускать такие ошибки?

P.S. используя XML::Parser
PM MAIL WWW   Вверх
ginnie
Дата 29.2.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Error202,  как это обойти в XML::Parser я не нашел, поэтому делаю предварительную замену таких символов в файле.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Error202
Дата 29.2.2012, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



ginnie, Спасибо!

А как можно вычислить, что там дает сбой? Файл 2Гб и посмотреть довольно сложно...
PM MAIL WWW   Вверх
ginnie
Дата 29.2.2012, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Error202,  в  сообщении об ошибке выводится позиция в файле. Вывожу фрагмент файла в районе этой позиции (скрипт в несколько строчек) и ищу некорректные символы.
По-хорошему, ошибку должны исправлять создатели файла, но обычно с книжными магазинами начинается такая тягомотина, что желание добиться исправлений очень быстро пропадает.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Error202
Дата 29.2.2012, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Логично... Я как-то не обратил внимание... Спасибо!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.