В очередной раз экспортируя и импортируя данные через phpMyAdmin столкнулся с долгим ожиданием, которое заставило найти более быстрый вариант - через терминал linux.
При импорте часто приходилось видеть что-то типа такого:
Достигнут временной лимит выполнения скрипта. Для завершения импорта, пожалуйста повторно отправьте тот же файл и импорт будет возобновлен.
Для экспорта используется утилита mysqldump, по указанной ссылке можно найти используемые этой утилитой опции.
Для примера экспорт 5кк записей занял примерно 8 секунд, а размер sql
файла 700 мб (к слову это на локальном сервере слабого ноутбука):
$ mysqldump database table --result-file=/home/user/database.sql
Некоторые из опций:
-u username
- указание пользователя для входа-p
- (без параметров), утилита потребует ввода пароляЗаходим на MySQL сервер через терминал:
$ mysql -u user -p
Выбираем базу данных, в которую будет происходить импорт:
$ USE database_name;
Учитывая рекомендации при импорте из MySQL применяем следующее:
$ SET autocommit=0;
$ SET unique_checks=0;
$ SET foreign_key_checks=0;
Указываем sql
файл импорта:
$ source path/to/datafile.sql
Далее можно наблюдать вывод процесса импорта прямо в консоль.
Завершаем транзакцию и меняем настройки на первоначальные:
$ COMMIT;
$ SET unique_checks=1;
$ SET foreign_key_checks=1;