Импорт базы данных MySQL в консоли. Экспорт базы данных (PHPMyAdmin) Импорт больших баз данных mysql

Добрый день друзья, сегодня мы с Вами научимся делать . Для чего это нужно, можете задать вопрос Вы. Прежде всего экспорт базы данных необходимо делать периодически для того чтобы в экстренных ситуациях Вы не потеряли важную для Вас информацию. Экспорт будет представлять собой небольшой файл, в котором будет храниться вся информация о БД. Для экспорта БД необходимо зайти в PHPMyAdmin и нажать на интересующую Вас БД. После этого вы увидите все находящиеся в ней таблицы и, не заходя в них, кликните на кнопку меню под названием экспорт. Перед Вами появится следующая страница:


Я советую Вам выбрать быстрый способ экспорта, а также в формате указать SQL . После этого вы можете нажать ок. Перед Вами появится окно, в котором Вам предложат сохранить файл.


Вы сохраняете файл в нужном для Вас месте, главное помните, куда Вы его сохранили, ведь он очень важен для нас.
Что касается обычного способа экспорта. Вы можете также его использовать, если Вам это необходимо, там присутствует множество дополнительных настроек, которые Вы можете задать при экспорте. Например, выбрать нужные таблицы из БД, указать кодировку, и многое другое. Если Вам интересна данная настройка, Вы можете ее посмотреть. Но мы с Вами не будем углубляться в данную настройку.
После того как вы сохраните файл у себя на компьютере я попрошу Вас удалить БД. Как это сделать я не буду Вам объяснять, т.к., мы уже это проходили. Не бойтесь удалять, мы все вернем с Вами на свои места.
Настало время заняться импортом базы данных . Переходим в меню импорт.


Выбираем обзор вашего компьютера, и указываем путь к нашему файлу. И нажимаем ок. Как видите, перед Вами появилась ошибка. Не пугайтесь, все дело в том, что мы с Вами импортировали не саму базу данных, а лишь все ее таблицы. Поэтому создайте вначале БД, зайдите в нее и нажмите кнопку импорт, проделав все указанное выше. Нажав кнопку ок, у Вас все получится, и если Вы все сделали правильно, ошибки появиться не должно.


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

Меня часто спрашивают, каким образом можно импортировать на сервер большую базу данных MySQL. Известно, что phpMyAdmin по-дефолту имеет ограничения на размер импортируемой БД.

Если ваш дамп не намного превышает допустимый лимит, можно его разбить на несколько частей и импортировать в несколько заходов. Это оправдано если, к примеру, лимит составляет 2Мб, а ваша база имеет размер 5-10 Мб. Понятно, что «резать» базу весом 100Мб на 50 частей - процесс довольно трудоемкий и затратный в плане временнЫх ресурсов.

Существует несколько вариантов решения этой задачи.

Редактируем конфиг веб-сервера

На VDS/VPS особых проблем с этим не наблюдается, достаточно лишь подкорректировать конфиг. А именно, в php.ini увеличить допустимые максимальные значения для загружаемых на сервер файлов, максимальный размер для файлов передаваемых методом POST:

Post_max_size = 2000M upload_max_filesize = 2000M

Кроме этого, если ваша БД очень большая, следует увеличить максимально допустимое время выполнения скрипта.

Max_execution_time = 32000 max_input_time = 32000

И на всякий случай можно увеличить размер допустимого объема оперативной памяти:

Memory_limit = 512M

После внесения изменений, обязательно перезагрузите веб-сервер.

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

Sypex Dumper

Можно воспользоваться сторонним софтом. И первое приложение на которое стоит обратить внимание - это Sypex Dumper .

Впервые воспользовавшись им много лет назад и оценив все его возможности и достоинства, я могу смело повесить ему ярлык «Must Have». Sypex Dumper - серверное приложение на PHP не требующее установки. Его достаточно скопировать, к примеру, в корень вашего сайта в директорию sxd и вызвать его в браузере: http://Ваш_Сайт/sxd/. Стоит заметить, что предварительно в директорию backup следует поместить дамп вашей базы данных. После инициализации скрипта вы увидите панель авторизации для подключения к базе. Вводим свой логин и пароль. Хост и порт - опционально, только если они специфические.

После авторизации можно перейти непосредственно к иморту БД. В поле «База данных» будет выбрана БД к которой вы подключены, а в поле «Файл» вы увидите ранее загруженный вами дамп в директорию Backup.

Для большинства случаев никакие дополнительные настройки больше не нужны и можно смело запускать импорт, нажав на кнопку «Выполнить». Импорт, в зависимости от размера БД и вашей скорости соединения с Интернет может занять некоторое время. Во время импорта вы можете видеть какие именно таблицы импортируются в данный момент в базу. По завершению работы скрипта вы увидите лог выполнения. Он выглядит, примерно, так:

Вот, собственно, и все - база импортирована!

Консоль

Импорт через консоль рассматривать не будем. Я думаю, люди, пользующиеся консолью без меня знают как импортировать любую БД. А простым пользователям без специальной подготовки лучше туда не соваться. Так как выполнение некоторых команд может привести к серьезным последствиям, вплоть до полного падения сервера.

В заключение

Я не берусь утверждать, что Sydex Dumper - это единственное и правильное решение. Существуют и другие более элегантные способы, которые требуют от пользователя определенных знаний и соответствующие доступы к настройках сервера.

Но в условиях виртуального хостинга, Sydex Dumper, безусловно, будет вашим незаменимым помощником.

Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.

Данная процедура подразумевает перенос данных из одной базы данных (А) в другую (Б). Как правило база данных Б находится на хостинге (или на Денвере), а база данных А, находится на компьютере пользователя и представляет из себя файл с расширением sql. У базы данных А есть еще одно название - Dump.

Как импортировать базу данных?

Импорт базы данных MySQL с помощью SSH

Этот способ используется достаточно редко, но мы его опишем. Для начала залейте БД из которой будет производится импорт на сервер хостинг-провайдера, где хранятся файлы вашего сайта. Далее для импорта базы данных используется команда:

mysql -uUSERNAME -pUSERPASSWORD DBNAME < DUMPFILENAME.sql

mysql --user=USERNAME --password=USERPASSWORD DBNAME < DUMPFILENAME.sql

Вместо слов написанных большими буквами подставляем:
USERNAME - имя пользователя базы данных, например uhosting_databaseuser;

USERPASSWORD - пароль пользователя БД, например Rjkweuik12;

DBNAME - имя базы данных, в которую будет производится импорт, например uhosting_databasename

DUMPFILENAME - имя dump-файла, из которого будет производится импорт данных. Здесь еще нужно указать путь к базе данных, которую мы заливали на сервер хостинг-провайдера.

Доброго времени суток, коллеги 🙂

Сегодня я продолжу знакомить вас с работой с MySQL в консоли и командной строкой MySQL.

Я уже написал статьи о том, как производить основные действия с данными MySQL через консоль иm делать бэкап базы MySQL, а также экспорт хранимой в ней информации.

Логическим продолжением этого повествования будет восстановление БД и хранящейся в ней информации с помощью операций импорта базы данных MySQL. И, что немаловажно, мы продолжим делать это с помощью инструмента всех трушных разработчиков — через консоль.

Если же вам нужна инструкция по импорту базы через phpMyAdmin, то вы можете найти её в статье о . В текущей статье я не горю желанием описывать её ещё раз, тем более, что сегодняшний материал будет посвящён исключительно импорту базы MySQL через консоль.

Но, перед тем, как мы приступим к обзору способов и инструментов, пару слов о том, что такое импорт базы данных MySQL, каким он бывает и как его лучше всего делать?

Импорт базы данных MySQL: что и зачем?

Импорт базы данных MySQL — это операция, при которой происходит наполнение базы информацией. При этом источником данных является файл дампа — слепок другой базы, автоматически созданный при операции экспорта, или специально подготовленный SQL скрипт.

Импорт, как и экспорт БД MySQL, бывает двух видов информации, хранящейся в базе:

  1. структуры базы, её таблиц и хранимых в них данных (в простонародье именуемых дампом БД);
  2. просто данных, хранящихся в таблице либо собранных с помощью SELECT запросов.

В данной статье будут рассмотрены оба варианта.

Для восстановления из дампа MySQL базы данных с её структурой и всей хранимой информацией, как уже было сказано, нужен файл дампа БД, который представляет из себя текстовый файл с любым расширением (предварительно может быть запакован в архив для уменьшения размера), содержащий SQL команды для создания самой базы и таблиц, а также наполнения их информацией.

Следовательно, для того, чтобы восстановить MySQL базу из дампа, требуется выполнение содержащихся в файле команд.

Для обычного восстановления данных такие сложности не обязательны. Достаточно иметь в наличии тестовый файлик, информация в котором будет структурирована тем же образом, что и в таблице БД: количество колонок с информацией соответствует числу атрибутов записи таблицы.

Для этих целей подойдёт и обычный txt файл, данные в котором будут разделены, либо файлы, создаваемые в специальных табличных редакторах (Microsoft Office Excel, OpenOffice и т.д.), имеющих отличное расширение: xls, csv, odt и др.

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

Добавление данных в MySQL: инструменты

По поводу инструментов осуществления импорта базы данных MySQL могу сказать, что их на сегодняшний день существует целых три.

Перечислю их, начиная с самых низкоуровневых, заканчивая высокоуровневыми (с точки зрения применения всяческих оболочек и надстроек):

  1. Консоль сервера и командная строка MySQL;
  2. Скрипты, написанные на языках программирования, позволяющие делать запись данных в MySQL с помощью языковых средств;
  3. Готовые программы, предоставляющие визуальный интерфейс для работы с БД (тот же самый phpMyAdmin, MySQL WorkBench, MySQL Manager и др.).

Думаю, что порядок расположения инструментов не вызовет ни у кого вопросов, т.к. средства языков программирования, как правило, работают на базе команд консоли MySQL, а программы базируются на скриптах или же работают с MySQL командной строкой напрямую.

Так или иначе, во главе всего лежит консоль, а остальные инструменты, по сути, являются её эмуляторами.

Поэтому использование консоли при импорте данных в MySQL позволяет обойти различного рода ограничения, устанавливаемые настройками языков программирования на Web сервере и самих программ (которые, кстати, не всегда возможно изменить).

За счёт этого залить базу данных MySQL через консоль можно не только быстрее, но и сделать эту операцию возможной в принципе, т.к. скрипты и программы склонны прерывать импорт при достижении максимального времени выполнения скрипта или вообще не стартовать его из-за размера загружаемого файла.

Думаю, все, кто хоть раз пытался загрузить дамп в MySQL БД большого размера через phpMyAdmin, понимают, о чём я говорю.

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

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

Надеюсь, что я замотивировал вас делать импорт базы данных MySQL через консоль (причём, как её структуры, так и отдельно данных).

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

Как восстановить MySQL базу из дампа через консоль?

Итак, для того, чтобы развернуть дамп MySQL из консоли есть два пути:

  1. с помощью команды в командной строке MySQL;
  2. в самой консоли сервера.

Начнём по порядку.

Итак, чтобы импортировать дамп базы данных MySQL в существующее хранилище через , нам сначала нужно её запустить и выбрать нужную базу данных, в которую мы будем заливать наш дамп.

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

После того, как вы сделаете указанное, вводим в MySQL Shell следующую команду:

Source путь_и_имя_файла_дампа;

Всё, что нам останется — это изучать сообщения в консоли о ходе выполнения операций, содержащихся в дампе.

Без предварительного переключения на нужную базу данных после соединения с сервером MySQL в консоли дамп можно импортировать следующей командой:

Mysql -u имя_пользователя -p имя_базы_данных < путь_и_имя_файла_дампа

Вот и всё. Главное — дождаться окончания импорта, если файл очень большой. Об окончании заливки дампа можно судить по тому, когда консоль сервера будет снова доступна.

Собственно говоря, в этом и заключается недостаток данного способа по сравнению с предыдущим, т.к. в первом есть возможность наблюдать за операциями, производимыми с БД во время импорта, а во втором — нет.

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

В Linux это можно сделать следующим образом:

Gunzip > [имя_файла_архива.sql.gz] | mysql -u -p

В Windows стандартной утилиты для распаковки архива в консоли нет, поэтому её нужно будет установить дополнительно.

Как видите, импорт дампа MySQL через консоль – операция весьма простая, которая выполняется одной командой. Так что для выполнения данной процедуры не обязательно быть разработчиком.

Если вдруг вы не знаете, как запустить консоль сервера, то можете найти эту информацию в статье о командной строке MySQL, ссылку на которую я уже располагал ранее.

Кстати, описанными способами возможен также и импорт таблицы MySQL, а не целой базы. В этом случае в заливаемом вами дампе должны присутствовать операции её создания и наполнения данными.

Загрузка данных в MySQL базу из файла в консоли

О восстановлении БД MySQL из дампа в консоли мы поговорили. Теперь самое время разобраться с тем, как аналогичным образом можно импортировать данные из файлов, в том числе из xls и csv в MySQL базу.

Для данной задачи у нас снова есть те же два инструмента, что и в предыдущем случае: командная строка MySQL и консоль сервера.

Снова начнём обзор по порядку.

Итак, для импорта файла в MySQL командной строке мы снова запускаем её и переходим на БД, в которую будут загружаться данные.

LOAD DATA INFILE "путь_и_имя_файла_дампа" INTO TABLE `таблица_базы_данных` COLUMNS TERMINATED BY "," ENCLOSED BY "\"" LINES TERMINATED BY "\n";

Не забудьте, что, если сервер MySQL был запущен с опцией —secure-file-priv (что часто бывает при использовании MySQL дистрибутивов, входящих в WAMP/MAMP сборки), то имя файла нужно указывать с учётом системной переменной secure_file_priv.

Для того, чтобы сделать импорт базы данных MySQL в консоли сервера, не заходя в MySQL Shell, нам пригодится утилита mysqlimport , входящая в состав дистрибутива MySQL, и следующий её вызов:

mysqlimport –u имя_пользователя –p имя_базы_данных имя_и_путь_к_файлу_импорта

Данная утилита является аналогом SQL команды LOAD DATA INFILE , только для командной строки. Но, спрашивается, почему тогда среди параметров её вызова не указана таблица, в которую будут загружаться данные из файла?

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

Т.е. если вы захотите сделать импорт из Excel таблицы в MySQL таблицу users , то ваш файл должен называться users.xls .

Расширение у импортируемого файла, как уже говорилось, может быть любым.

С помощью mysqlimport также можно загружать сразу несколько файлов xls или csv в MySQL. Чтобы данные попали по назначению, названия файлов и таблиц БД, как и в предыдущем примере, также должны совпадать.

Если вдруг в импортируемом файле столбцы идут не в той же последовательности, что и колонки таблицы БД, то для уточнения их порядка нужно использовать опцию —columns в следующем виде:

Mysqlimport –u имя_пользователя –p имя_базы_данных --columns столбец1, столбец2, … имя_и_путь_к_файлу_импорта

Естественно, что в своих примерах я не рассмотрел полный список параметров mysqlimport, т.к. некоторые из них весьма специфичны и на практике используются крайне редко.

Если захотите ознакомиться с ними самостоятельно, то полный их список доступен здесь — https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Особенности загрузки данных в MySQL базу из дампа

Если хотите, чтобы процесс импорта большой базы MySQL проходил быстрее, то необходимо создавать дамп БД с использованием специальных опций команды mysqldump, о которых я писал в своей предыдущей статье об экспорте БД MySQL, ссылку на которую размещал в тексте ранее.

У самих команд импорта баз данных MySQL таких опций, к сожалению, нет.

Единственное, для увеличения скорости при загрузке большого дампа БД можете использовать следующую фишку.

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

2. Прописываем в начале файла следующие строки:

SET foreign_key_checks = 0; SET UNIQUE_CHECKS = 0; SET AUTOCOMMIT = 0;

Обратите внимание! Может быть они уже есть или закомментированы (многие программы, с помощью которых делают дампы, могут добавлять их автоматически)

3. В конце файла прописываем обратные действия:

SET foreign_key_checks = 1; SET UNIQUE_CHECKS = 1; SET AUTOCOMMIT = 1;

Кстати, данные команды помогут не только ускорить процесс импорта, но и сделать его возможным.

Дело в том, что, если вы хоть раз заглядывали в файл дампа для импорта БД MySQL, то могли заметить, что операция задания структуры загружаемых таблиц выглядит так:

DROP TABLE IF EXISTS `clients`; CREATE TABLE `clients` (…);

Т.е. выполняется поиск в БД таблицы с таким же именем, как и у импортируемой, и если таковая найдена, то она удаляется и создаётся заново.

И если вдруг существующая таблица будет связана внешними ключами с другими, то вся загрузка провалится.

Поэтому отключение проверки существования внешних ключей и прочих – это ещё и отличная гарантия успешного выполнения процесса импорта базы данных MySQL.

Особенности импорта csv в MySQL БД и других файлов

При загрузке данных в MySQL БД из текстовых файлов может также потребоваться отключение внешних ключей.

Причём, в отличие от предыдущей ситуации, в данном случае прописать директивы в файл не получится, т.к. SQL команды в нём не будут восприниматься и выполняться.

В предыдущей статье об экспорте базы MySQL я уже упоминал о том, как это сделать с помощью следующей операции в командной строке MySQL:

SET FOREIGN_KEY_CHECKS=0;

Однако, там я не упомянул, что системная переменная MySQL FOREIGN_KEY_CHECKS имеет два значение: глобальное и сессионное (для текущей сессии).

Глобальное значение переменных MySQL действует при выполнении любых действий на сервере MySQL вплоть до его перезапуска. Тогда значение переменных будут сброшены и им будет присвоено значения по умолчанию.

Сессионное значение системной переменной MySQL устанавливается только на время сеанса работы пользователя с сервером MySQL. Сеанс или сессия начинается при подключении клиента к серверу, при котором ему присваивается уникальный connection id , и заканчивается при отключении от сервера, которое может произойти в любой момент (например, по таймауту).

Почему я об этом решил вспомнить?

Потому что при выполнении команд загрузки файла в MySQL БД через консоль сервера, без захода в MySQL Shell, я обнаружил, что отключение проверки внешних ключей приведённым ранее способом не работает.

В консоли всё так же выдавалось сообщение об ошибке, вызываемой наличием в таблице внешних ключей.

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

SET SESSION имя_переменной = значение_переменной; SET @@session.имя_переменной = значение_переменной; SET @@имя_переменной = значение_переменной;

В приведённых командах переменная явно помечается как сессионная.

А, поскольку, я выполнял загрузку csv файла в MySQL таблицу через консоль сервера, без прямого подключения к серверу MySQL, то сеанс и не был создан, в рамках которого работало бы моё сессионное значение переменной.

В итоге я установил глобальное значение FOREIGN_KEY_CHECKS, и импорт успешно выполнился.

Сделать это можно одним из перечисленных способов:

SET GLOBAL имя_переменной = значение_переменной; SET @@global.имя_переменной = значение_переменной;

После изменения значений для проверки того, что изменения вступили в силу, не лишним будет просмотреть значения переменной. Для вывода сессионного и глобального значений одновременно пользуйтесь следующей командой:

SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

На этом сегодняшняя статья, посвящённая импорту базы данных MySQL, подошла к концу. Делитесь своими впечатлениями и собственными наработками в комментариях. Думаю, что многим будет интересен ваш опыт.

До новых встреч! 🙂

P.S. : если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP , OpenCart , WordPress , Laravel , Yii , MySQL , PostgreSQL , JavaScript , React , Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги , корпоративные сайты , Интернет-магазины , CRM , порталы . В том числе поддержка и разработка HighLoad проектов . Присылайте ваши заявки на email [email protected] .

При переносе сайта с локального сервера на хостинг, одной из обязательных процедур является экспорт/импорт БД (базы данных). Поэтому, в этой статье я попытаюсь, как можно более подробно описать процесс экспорта и импорта базы данных с локального сервера, то есть с веб-интерфейса PHPMyAdmin версии 3.2.3 на хостинг.

Первое, что нужно сделать, это запустить локальный сервер, в данном случает это Denwer. После запуска Denwer нужно открыть браузер и в браузерной строке прописать: «http://localhost/tools/phpmyadmin», после чего перед Вами откроется окно (Рис.1) с созданными ранее базами данных .

Рис.1

Далее нужно выбрать базу данных, которую мы будем экспортировать, в моем случае это БД с названием Mybd. Базу данных можно выбрать, кликнув по ней в левой части окна браузера, где написано «Please select a database» (Рис.2) .


Рис.2

После выбора нужной базы данных, откроется окно со структурой БД. В верхнем меню есть пункт «Export» с помощью которого, мы будем экспортировать БД на компьютер, чтобы потом импортировать её на хостинг. И так, переходим по пункту «Export» (Рис.3) .


Рис.3

В открывшемся окне нужно произвести некоторые измерения (Рис.4) , а именно: в блоке «Export» нужно выбрать все таблицы базы данных, нажав по пункту «Select All» и поставить галочку напротив пункта SQL , этот пункт отвечает за тип файла, который будет экспортирован. Также, необходимо поставить галочку напротив пункта «Save as file» , который обеспечит сохранение БД в файле. Остальные настройки менять не нужно, просто нажимаем кнопку «Go» .

Рис.4

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

Также, нужно сменить кодировку файла на UTF-8 без BOM, для изменения кодировки я использую текстовый редактор Notepad++ (Скачать ) . С помощью этой программы открываете файл базы данных и в меню «Кодировка» выбираете «Преобразовать в UTF-8 без BOM» (Рис.5) , после чего сохраняем и закрываем.


Рис.5