Статьи

MySQL и Ubuntu 12.10

У меня недавно была причина шунтировать большие объемы данных MySQL на моем ноутбуке с Ubuntu 12.10. Данные были экспортированы из MySQL в файлы .sql, и их размер превышал 50 МБ. Это исключило PHPMyAdmin для повторного импорта данных. Вот что я сделал, чтобы решить проблему.

Насколько мне известно, для Ubuntu не существует программного приложения, которое обеспечивало бы среду графического интерфейса для такого рода задач. Я знаю о Navicat , но это дорого (129 $ / 83 за стандартную версию) для приложения, которое все еще работает только в Wine .Базы данных MySQL

Это не MySQL, а PHPMyAdmin, это я

Я не жалуюсь на PHPMyAdmin. Это отличная работа, и я использую ее для большинства моих запросов на моей машине с Ubuntu. Он просто не может справиться с огромным импортом данных без большого количества изменений конфигурации. И я действительно не люблю настраивать вещи. Ну, нет, если есть другое (более простое) решение.

Итак, проблема …

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

Мне просто нужно получить эти данные в …

Решение — привет командная строка

Если вы читаете этот заголовок и невольно судорожно, не бойтесь. Это будет (в основном) безболезненно. Я собираюсь предположить, что у вас установлен MySQL через synaptic; стандартная установка другими словами.

соединительный

Откройте окно терминала и выполните:

mysql -u username -p -h localhost

Вот как вы подключаетесь. Просто как тот. Это не так уж плохо, не так ли? Имейте в виду, курсор будет мигать на вас, так что вы можете быть удивлены, что делать дальше.

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

Выбор базы данных для использования

Это легко:

use testing

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

show databases

Вы можете создать базу данных и некоторые таблицы тоже

Это не должно быть сюрпризом — конечно, вы можете. Как хоть? Что-то вроде этого:

CREATE DATABASE test_db;
use test_db;

Сейчас мы используем нашу новую базу данных. У него нет таблиц, поэтому давайте исправим это:

CREATE TABLE `notes` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(200) DEFAULT NULL,
  `note` text,
  PRIMARY KEY (`id`)
)

Это создает простую таблицу в базе данных test_db. Теперь мы можем взглянуть на таблицу, которую мы только что создали:

mysql> describe notes;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| title | varchar(200)     | YES  |     | NULL    |                |
| note  | text             | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.04 sec)

mysql>

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

Получение данных в

Ввод «quit» позволяет вам покинуть монитор MySQL, так что сделайте это сейчас. Я обнаружил, что импорт работает лучше всего, если выполнить команду соединения и импорта вместе. Это выглядит так:

mysql -u root -p -h localhost test_db < /path/to/file/world.sql

В зависимости от размера файла, какое-то время ничего не произойдет, но затем приглашение вернется. Вот и все, работа сделана.

Убедитесь, что вы подключены и используете test_db, затем выполните:

mysql> SHOW TABLES;
+-------------------+
| Tables_in_test_db |
+-------------------+
| City              |
| Country           |
| CountryLanguage   |
| notes             |
+-------------------+
4 rows in set (0.00 sec)

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

В заключение…

Таким образом, в конце концов командная строка — лучший способ работы с большими файлами .sql в Ubuntu. Я подозреваю, что это может иметь место для Linux в целом. Процесс не так уж сложен, и есть кое-что довольно освежающее в простом набивании нескольких команд и достижении цели.