У меня недавно была причина шунтировать большие объемы данных MySQL на моем ноутбуке с Ubuntu 12.10. Данные были экспортированы из MySQL в файлы .sql, и их размер превышал 50 МБ. Это исключило PHPMyAdmin для повторного импорта данных. Вот что я сделал, чтобы решить проблему.
Насколько мне известно, для Ubuntu не существует программного приложения, которое обеспечивало бы среду графического интерфейса для такого рода задач. Я знаю о Navicat , но это дорого (129 $ / 83 за стандартную версию) для приложения, которое все еще работает только в Wine .
Это не 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 в целом. Процесс не так уж сложен, и есть кое-что довольно освежающее в простом набивании нескольких команд и достижении цели.