На днях возникла необходимость импортировать огромное количество товаров в действующий интернет магазин. Опустим подробности про систему управления, сейчас это не столь важно, это просто пример ситуации. Имеем прайс в Excel (который легко переделываем в *.CSV) и базу данных. Ну а скрипт чуть ниже.

Внимание! Если вы не умеете программировать, это решение вам не поможет. Логику добавления данных из CSV файла в базу каждый пишет сам!

Собственно приведу сразу код с комментариями.

 

По мере необходимости скрипт будет обновляться и обрастать новыми функциями, но пока на ум ничего не пришло, а задача решена.

Скачать файл

Обновлено 19.06.2014

Улучшения:

  • Ускорили работу, отключив предварительно индексацию в БД после каждого запроса. Особенно поможет, если нужно импортировать over 9000 очень много позиций;
  • Настройки вынесены в отдельный массив, который достаточно легко настроить, он находится в самом начале скрипта;
  • Немного переписана функция space_off, которая отвечает за удаление всех пробелов, выигрываем в быстродействии;
  • Скрипт теперь можно «включать» и «выключать», чтобы случайно не выполнить его потом еще раз.
  1. Пустая страница, почему так ?

    Staer
    • Внутри цикла foreach попробуйте заменить строку №115
      // Тут собственно делаем запросы в соответствии с задачей

      на <?php print_r ($val);?>

      Таким образом будет понятно, какие данные приходят из CSV-файла в цикл, как он перебирается, и что делать с этими данными дальше — решать уже Вам самим!

      Дмитрий Ильичев (Автор)
  2. Спасибо за статью! Всё работает.

    Эдуард
  3. Можете ли Вы написать пример цикла для импорта данных.
    foreach (csv_to_array($options[‘filename’]) as $val)

    Snowy
    • Не тестировал, но суть следующая. Добавляем в таблицу test_table данные name и email из csv файла:

      Дмитрий Ильичев (Автор)
  4. Не совсем понял как прописать значения, чтобы они подтягивались из csv файла.
    VALUES (‘$val[name]’, ‘$val[email]’)
    Если я от руки прописываю значения, то они вносятся в бд. А пока получается только NULL.

    Snowy
  5. Огромный респект тебе, дружище. Думал сейчас встряну на пару дней в создании скрипта, а тут вот оно, на поверхности, спасибо большое =)

    Алексей
  6. Добрый день не подскажите в чём может быть проблема при попытке запустить скрипт выходит ошибка: сайт не может обработать этот запрос. HTTP ERROR 500?

    Игорь
    • Рекомендую включить логи сервера и смотреть там. Могут быть ошибки из-за версии PHP или отсутствии какого-нибудь модуля. Все индивидуально.

      Дмитрий Ильичев (Автор)
  7. Добрый день, подскажите — скрипт можно использовать для импорта товаров csv на свой сайт, я продаю на Etsy? там есть выгрузка CSV. Сделал свой сайт на скрипте для цифровых товаров, но там не возможности загрузить товары пакетно. Ваш скрипт может помочь? Описываю подробно, потому что не совсем компетентен в сайтостроении)

    Павел
    • Увы, нет. Логику добавления данных в базу каждый пишет сам под свою задачу. Без навыков программирования не обойтись.

      Дмитрий Ильичев (Автор)

Оставить комментарий