SQL

Импорт большой базы данных в mysql

Бывает, что нужно развернуть сайт в базой данных свыше 2 - 8 мб на хостинге.

Итак, смотрим варианты:

Вариант 1:

Импорт в сжатом виде, по-скольку SQL сжимается также хорошо как текст.

Есть минусы: хостинг должен поддерживать функцию сжатия данных, и не всегда размер сжатого файла занимает 2-8 мб.

Вариант 2:

Это так сказать вариант в лоб и если есть свободное время.

Берем и выгружаем бэкап базы не целиком, а по несколько таблиц, чтобы файл не превышал наши лимиты.

Вариант 3:

Использовать сторонний скрипт, который позволяет производить экспорт и импорт базы данных, минуя общение с phpMyAdmin.

Один из таких это BigDump.

Вариант 4:

Если у Вас имеется доступ к консоли, то можно добавить в php.ini следующие строки (увеличиваем лимит загрузки файлов по времени и размеру), после загрузки, лучше вернуть все назад, чтобы не нагнули сервер:

max_execution_time = 80000

max_input_time = 80000

upload_max_filesize = 180M

post_max_size = 180M

Вариант 5.

Эмулятор терминала и сделать следующий пункт через него.

К примеру можно взять PHPterm. Основной минус, это ограничения хостинга в плане безопасности запуска команд и скриптов.

Вариант 6.

Популярная и простая программа BigDump, с ее помощью можно импортировать большие базы данных, только в данном случае необходим Zend Optimizer либо Nu-Coder.

Программа называется Sypex Dumper, и вторую версию скрипта можно даже интегрировать в наиболее популярные CMS.

На официальном сайте есть как платная утилита, так и облегченная бесплатная версия.

Вариант 7:

Считаю его наиболее быстрым и оптимальным вариантом загрузки большой базы данных, имея доступ к консоли нужно загрузить дамп базы данных dump.sql через ftp, а затем залить её через консоль ssh:

mysql -h hostname -u user-name -p DB_name < /path-to-dir/dump.sql

если у вас в качестве хоста базы данных используется стандартный localhost , то ключик -h можно и опустить, так что получится вида:

mysql -u user-name -p DB_name < /path-to-dir/dump.sql

Важно: При импорте базы данных могут возникнуть проблемы с кодировками, поэтому нам надо убедиться что default база и выгрузка sql находятся в одной кодировке,

либо переконвертировать базу данных в стандартную для mysql кодировку (обычно это utf-8):

iconv -f CP1251 -t UTF-8 dump.sql > dump.sql.utf8

либо указать необходимую кодировку при процедуре импорта базы данных:

mysql -h hostname -u user-name -default_character_set utf8 -p DB_name < /path-to-dir/dump.sql

Администратор

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