Импорт данных в Mysql из командной строки

17 ноября 2014

Иногда, при импорте через phpMyAdmin в базу данных MySql дампа относительно большого размера, случается проблема timeout. Бывает,что манипуляции с увеличением размера принимаемых сервером данных и таймаутом не помогают. Часто, выходом из этого (без разбиения процедуры импорта на части), является импорт прямо через демон Mysql:

Если мы в windows и текущий пользователь User_main и файл dump_file.sql

лежит в C:\Documents and Settings\User_main, тогда делаем так :


Пуск -> Выполнить -> cmd ->

C:\Documents and Settings\User_main>
mysql -u имя_пользователя -pПАРОЛЬ имя_базы < dump_file.sql

путь до dump_file.sql нужно указывать полный(физический путь), например: D:/data/dump_file.sql

При работе с удаленным сервером все примерно тоже с небольшой вариацией (тут описана конфигурация хостинга с отдельным физическим сервером Mysql). Сначала через Putty соединяемся с сервером хостинга по SSH, затем конектимся к серверу mysql:

mysql -u (username) -p(password) -D (base_name) -h (host);

При удачном соединении видим что-то типа этого

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.15 MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

затем, находясь в командном интропритаторе mysql просим, вывести список баз командой show databases:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| base1              |
| base2              |
| my_base            |
| base3              |
+--------------------+
5 rows in set (0.00 sec)

Далее выбираем нужную командой use (в нашем случае my_base), видим подтверждение, что база выбрана - вторая строка Database changed, и импортируем в нее файл dump.sql командой source. Файл я предварительно закинул по ftp в корень сервера, поэтому тут пример без пути до него

mysql> use my_base;
Database changed
mysql>source dump.sql;

Такие манипуляции вынудило меня делать upgrade одной таблицы в базе, размер дампа которой стал 5,7 Mb и содержала она порядка 25 000 строк. Стандартный хостинговский php-Myadmin c этим уже "не справлялся"

Теги: Mysql