Запись данных из CSV-файлов в базу MySQL

Это вопрос из категории «для начинающих». Но тем не менее я решила его осветить на страницах блога, в угоду желанию объять необъятное и получить с поисковиков дополнительный трафик. 🙂

Итак, у вас есть CSV-файл, и перед вами встала задача записать содержимое этого файла в базу.

Импорт CSV-файла через PHPMyAdmin

Первый и самый простой способ — воспользоваться готовым инструментом. Например, функция импорта данных из csv-файла в базу есть в PHPMyAdmin-е.

Выбираем нужную таблицу, на вкладке «Структура» внизу нажимаем на «Вставить текстовые файлы в таблицу«. Указаваем настройки импорта.

Внимание! Если после нажатия «Выполнить» у вас вылезли ошибки типа

ldi_check.php: Missing parameter: db
ldi_check.php: Missing parameter: table

это может объясняться разными причинами.

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

(Ссылка на пункт 1.16 FAQ) Начиная с версии 2.7.0 функция импорта была переписана и проблем с импортом больших файлов не должно возникать.

Следующее, что можно проверить (или спросить у провайдера), — это значения параметров upload_max_filesize, memory_limit и post_max_size в конфигурационном файле php.ini. Эти три настройки ограничивают максимальный размер данных, которые могут быть переданы и обработаны PHP.

Там же, в документации, приводится описание нескольких «обходных путей», которые подойдут, если вы импортируете не scv-файл, а заливаете дамп базы, а ваш провайдер не хочет менять настройки:

а) Проверьте настройку $cfg[‘UploadDir’]. Она позволяет настроить загрузку файла на сервер через scp, ftp или другим методом. PhpMyAdmin может работать с файлами, расположенными во временном каталоге. Более подробную информацию читайте в разделе Настройки документации.

б) Используйте сторонние утилиты (например, BigDump) для того, чтобы разбить файл перед загрузкой.

в) Если у вас есть прямой shell доступ, используйте MySQL для импорта файлов напрямую. Вы можете это сделать с помощью команды «source»:

source filename.sql

2. Если файл небольшой, но эти ошибки все же появляются, то вам может помочь вот эта тема на форуме.

Парсинг CSV-файла с помощью PHP

Далее — программные способы. Они подойдут вам, если вы хотите все это дело автоматизировать или если перед непосредственной вставкой вам нужно провести дополнительную обработку данных.

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

Читать дальше >>

Автор: Masha