Экспорт и импорт данных из MySQL через терминалВ очередной раз экспортируя и импортируя данные через phpMyAdmin столкнулся с долгим ожиданием, которое заставило найти более быстрый вариант - через терминал linux.
При импорте часто приходилось видеть что-то типа такого:
Достигнут временной лимит выполнения скрипта. Для завершения импорта, пожалуйста повторно отправьте тот же файл и импорт будет возобновлен.
Для экспорта используется утилита mysqldump, по указанной ссылке можно найти используемые этой утилитой опции.
Для примера экспорт 5кк записей занял примерно 8 секунд, а размер
sqlфайла 700мб (на локальном сервере разработчика).
Пример:
$ mysqldump mydatabase mytable --result-file=/home/user/database.sql
Указание mydatabase является обязательным, а mytable опциональным, если не будет выбрана таблица для экспорта, то экспортируется вся база данныхю Опция --result-file указывает куда нужно сохранить файл экспорта, но можно обойтись без нее просто перенаправив вывод в файл:
$ mysqldump mydatabase > /home/user/mydatabase.sql
Возможно потребуется аутентификация, для этого используем имя пользователя (-u username) и пароль (-p):
$ mysqldump mydatabase -u root -p > /home/user/mydatabase.sql
Enter password:
Если нужно указать список баз данных для экспорта, то можно использовать опцию --databases:
$ mysqldump --databases mydatabase1 mydatabase2 > /home/user/mydatabase.sql.gz
Часто бывает что нужно получить сжатые дампы, для этого можно использовать gzip:
$ mysqldump mydatabase | gzip > /home/user/mydatabase.sql.gz
Но дампы желательно проверить чтобы убедиться что в них действительно пригодная для восстановления информация, это можно сделать при помощи любого просмотрещика файлов, который на лету умеет распаковывать архивы и показывать содержимое, например mcedit:

Заходим на 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;