Если нужно сделать импорт всех sql файлов в папке
Если нужно сделать импорт всех sql файлов в папке

Недавно столкнулся с неприятной ситуацией. Получил дамп базы, а он оказался разбитым на несколько файлов. Каждая таблица — отдельный файл, коих в итоге больше сотни. Каждый файл загружать вручную, естественно, не вариант, особенно когда ты программист ;)
Первое, что пришло в голову, это написать простой php-скрипт, который бы прошелся по каталогу и создал бы единый sql-дамп. И раньше я бы наверное так и сделал, но, во-первых, общий размер файлов более 100 Гб (возможно поэтому дамп и разбили), во-вторых это просто не интересно;)

Импорт одного файла через командную строку

Большие sql-файлы следует импортировать исключительно через командную строку, никаких phpmyadmin’ов или клиентских программ. Так у вас не возникнет проблем с недостатком оперативной памяти или  настройками php. Однако, на всякий случай, сделаем побольше параметр max_allowed_packet в конфигурационном файле my.ini. У меня стоит 128m. Запускаем терминал и вводим строку такого вида

Для Linux команда будет идентичной, только путь к файлу mysql будет другой.

Импорт всех файлов в папке

Теперь нужно применить такую команду для каждого файла в папке. Для этого создадим простой сценарий с обычным перебором файлов в цикле. Для Windows команда выглядит так

Для Linux немного по-другому

Для удобства я в Windows создал .cmd файл с вышеуказанной строкой. На случай, если импорт придется повторить, останется только запустить файл. Если же я дамп передам кому-то еще, у него уже будет файл для импорта всех таблиц.

Похожие записи

  • Нет похожих записей

Ваш комментарий

Я не робот