На днях возникла необходимость импортировать огромное количество товаров в действующий интернет магазин. Опустим подробности про систему управления, сейчас это не столь важно, это просто пример ситуации. Имеем прайс в Excel (который легко переделываем в *.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 или отсутствии какого-нибудь модуля. Все индивидуально.

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

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