Парсинг большого кол-ва данных в базу SQL

Тема в разделе "Инъекции в MySQL", создана пользователем Badcompany, 8 дек 2017.

  1. Badcompany

    Badcompany New Member Пользователи

    Регистрация:
    8 дек 2017
    Сообщения:
    3
    Добрый день всем!

    Я новичок в работе с CD, может кто-то сможет подсказать, как решить мою задачу?:
    Необходимо спарсить большое кол-во данных о компаниях (400-500 тыс.)- адрес, почта, тел и т.д.
    Нужно, чтобы в итоге получилась база SQL со всеми данными для импорта на сайт.

    - можно ли парсить сразу в базу SQL такое кол-во значений с помощью CD? не будет ли тупить от такого кол-ва строк в базе?

    - в одну из ячеек в БД на каждую строку нужно сгенерить текст по определенному шаблону с включением спарсенных данных с этой страницы, например: Магазин {название магазина} продает {название товара} по цене {цена товара}. можно ли генерить такой текст параллельно с парсингом и сразу записывать данные в БД? или есть способ проще?

    - как потом можно импортировать базу такого объема (а получится порядка 500-600 Мб а может и больше) на сайт? Движок не ВП. стандартными средствами phpMYadmin не получается импортнуть( долго импортирует - сервак засыпает и импорт отваливается). Может кто-то импортировал такого объема базу через SYPEX или BigDump?

    Если предложите другие варианты решения, буду благодарен))
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    1) Можно Ссылки недоступны для гостей
    2) Можно, для парсинга и вывода информации используйте границы парсинга Ссылки недоступны для гостей и помещайте их макросы в нужные места шаблона вывода
    3) Вы же собрались сразу парсить в базу, при парсинге каждого товара данные будут добавляться в базу (смотрите пункт 1)
     
  3. Badcompany

    Badcompany New Member Пользователи

    Регистрация:
    8 дек 2017
    Сообщения:
    3
    Я имел ввиду, если допустим, парсить в БД на локалке. Я правильно понимаю, что на локалку писаться в базу данные будут быстрее, чем сразу их в БД на сервере грузить?

    Меня собственно интересует, как ПРАВИЛЬНЕЕ И БЫСТРЕЕ выполнить поставленную задачу? может мной предложенный способ -не самый хороший вариант)
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Правильнее и быстро - миновать локальную БД и сразу парсить в БД на сервере.
     
  5. Badcompany

    Badcompany New Member Пользователи

    Регистрация:
    8 дек 2017
    Сообщения:
    3
    Спасибо за помощь! буду разбираться
     
    Root нравится это.
  6. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Миллионами парсил в базу информацию, процессор занимало 1-2% во время импорта в 50 потоков.
     
    napserious и Root нравится это.
  7. rushmessiah

    rushmessiah Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    27
    Приветствую!

    Скрипт для добавления в данных в mysql-базу вызывается в повторяющейся границе и для некоторых документов может вызываться до ~200 раз. Документов много и поэтому в базу записываются не все данные, т.к. CD не успевает выполнить все ~200 вызовов скрипта и переходит к другому документу. Сталкивался ли кто-нибудь с такой проблемой и как решали?
     
  8. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    867
    Проверьте максимальное кол-во одновременных подключений к БД
    Код:
    SELECT @@max_connections;
    
    Увеличить максимально допустимое количество подключений:
    Можно выполнив в mysql
    Код:
    set global max_connections = ***;
    
    Или в файле my.cnf добавить или изменить секцию, при этом необходимо перезагрузить mysql.
    Код:
    max_connections = ***
    
     
    Последнее редактирование: 5 июл 2018
    kagorec и xLime нравится это.

Поделиться этой страницей