Интерфейс MySQL Command line client, с которым вы работали в предыдущем разделе, удобен, но не позволяет использовать функциональность утилиты mysql полностью. Кроме того, в состав MySQL входит еще ряд полезных утилит, с одной из которых, mysqldump, необходимо познакомиться даже начинающим.
3.1.1. Утилита командной строки mysql
Клиентская утилита mysql запускается в интерактивном режиме в DOS-окне, когда вы выбираете в меню пункт Command line client. До MySQL 5 в комплекте поставки сервера не было такой возможности запуска mysql, и приходилось самим вызывать окно для работы с командной строкой. Как всегда в Windows, за удобство работы с готовым интерфейсом приходится платить непониманием сущности происходящего, при этом еще и лишаясь некоторых возможностей, благополучно использовавшихся при работе со старым интерфейсом. Поэтому, налюбовавшись на сервис Command Line Client из MySQL 5, вернемся в юность информационных технологий и откроем DOS-окно для ввода команд. В Windows это делается так: щелкаем по кнопке Пуск,выбираем пункт меню Выполнитьи в появившемся окне Запуск программынабираем cmd. Появляется черное DOS-окно со строкой, содержащей имя текущего каталога, – это приглашение ввести команду. Курсор мигает в конце этой строки.
Установленный сервер mysqld-nt.exe, клиентские утилиты mysql, mysqidump и mysqlimport находятся в том каталоге, в который вы установили сервер, а именно в C:\Program Files\MySQL\MySQL Server 5.0\bin. Поскольку при установке MySQL вы добавили путь до этого каталога в переменную PATH, то смело можете запускать утилиту сразу после открытия DOS-окна.
Утилиты предназначены для работы с сервером и при запуске потребуют указать имя пользователя, под которым вы хотите подключиться к серверу, и пароль. При конфигурировании сервера MySQL вы указали пароль для суперпользователя root, теперь снова им пора воспользоваться. Обычно для получения доступа к серверу MySQL необходимо сообщить клиентской программе и хост, с которым вы хотите соединиться. Например, клиент mysql можно запустить следующим образом:
>mysql -h host_name -u user_name -pyour_pas
Здесь ключ -h указывает на то, что дальше последует имя хоста, к которому вы хотите подключиться. По умолчанию подключение осуществляется к серверу localhost. Ключ -u означает, что за ним следует имя пользователя, от имени которого осуществляется соединение, а после ключа -р указывается пароль. Обратите внимание, что пробела перед паролем нет.
Формат вызова утилиты mysql в нашем случае будет таким:
> mysql -u root -p
После ключа -р не указан пароль, мы знаем, что он нужен, но не хотим давать его в командной строке, а дождемся приглашения и введем так, что его у нас из-за спины никто не прочитает. Приглашение появится, если сервер MySQL запущен, а если сервер не доступен, будет выведено сообщение о невозможности к нему подключиться. Если ключи набраны неверно, например, пропущены пробелы, вы получите справку по утилите. После ввода пароля вы должны увидеть приветствие и приглашение командной строки уже самой утилиты mysql (рис. 6).
Рис. 6. Запуск утилиты mysql
Похоже на MySQL Command Line Client?Что и требовалось доказать.
Получив приглашение утилиты mysql, можно давать команды MySQL для создания баз и таблиц. Завершение сеанса работы происходит по команде:
mysql>quit
После этого в DOS-окне снова появится приглашение операционной системы. Учтите, что и при работе с mysql, и с операционной системой существует возможность повтора ранее данных команд. Просмотреть историю команд можно щелчками по кнопкам со стрелками вверх и вниз. По щелчку после приглашения командной строки появляются команды, запустить их можно, нажав клавишу <Enter>.
Утилита mysql может работать в двух режимах: интерактивном, который вы только что инициировали, и пакетном.
Для работы с утилитой в пакетном режиме следует написать сценарий, состоящий из последовательности команд SQL, которые предстоит исполнить для создания базы и таблиц, входящих в базу. Сценарий следует сохранить в тот же каталог bin сервера MySQL, из которого вы запускали утилиту mysql. Принято хранить сценарии в файлах с расширением sql. Кроме уже рассмотренных команд в скрипте надо предусмотреть возможность того, что в сценарии создания таблицы возможны ошибки. При исправлении ошибок в сценарии вы запускаете его несколько раз, но уже при повторном запуске получаете сообщение о том, что нельзя создать уже существующую таблицу. Значит, надо предварять создание таблицы командой
mysql> DROP TABLE IF EXISTS cars;
и удалить таблицу, если она уже существует.
Тогда сценарий создания и заполнения таблицы cars будет выглядеть так:
USE taxi;
DROP TABLE IF EXISTS cars;
CREATE TABLE cars (
model char(50) NOT NULL,
madein year(4) NOT NULL,
reg_number char (12) NOT NULL,
color char(15) NOT NULL,
id smallint AUTO_INCREMENT PRIMARY KEY
) ;
INSERT INTO cars (model, madein, reg_number, color) VALUES
('Volga','2002','A788YC23','yellow'),
('Volkswagen', '2003' , 'A789YC23', 'red'),
('Renault','2005','A790YC23','white');
Скрипт создается в любом текстовом редакторе в кодировке Windows-1251. В этой кодировке данные и записываются. И хотя в окне утилиты mysql русские буквы будут нечитаемыми, но скрипты (например РНР) передадут символы правильно.
При использовании в пакетном режиме сценарии с запросами для создания базы надо копировать в каталог bin и передавать их на вход утилите mysql при запуске:
>mysql -u root -p < script.sql
Здесь script.sql — это сценарий, содержащий команды SQL для создания таблиц, записи в них данных и т. п.
3.1.2. Утилита mysqldump
Утилита mysqldump позволяет получить дамп ("моментальный снимок") содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер баз данных. Дамп будет содержать набор команд SQL для создания и заполнения таблиц. Откройте окно. Если вы из командной строки дадите такую команду:
> mysqldump имя_базы
то распечатаете весь этот набор команд. Чтобы сохранить дамп в файле, дайте команду перенаправить вывод не на экран, а в файл backup-file.sql:
>mysqldump имя_базы > backup-file.sql
Если не указывать имена таблиц или использовать параметр --databases или --all-databases, то будет получен дамп базы данных в целом (всех баз данных сервера).
Перенеся файл дампа на другой сервер MySQL, можно этот файл передать на вход утилиты MySQL для создания таблиц в базах данных.
3.1.3. Утилита mysqlimport
Утилита mysqlimport импортирует текстовые записи в таблицы. На основании имени файла утилита определяет имя таблицы, в которую импортируются данные.
Для каждого текстового файла, указанного в командной строке, mysqlimport удаляет расширение в имени файла и использует его, чтобы определить, в какую таблицу занести содержимое. Например, файлы с именами 'patient.txt', 'patient. text' и 'patient' должны быть все занесены в таблицу с именем 'patient'.
Например, для того чтобы импортировать данные из файла new.txt (одноименного с таблицей базы) в базу данных our_base, надо дать следующую команду, а затем ввести пароль:
> mysqlimport -u root -p -local our_base new.txt
password:******
Каждая строка в файле образует запись в таблице и должна содержать значения полей, разделенные запятыми. Конец записи распознается по символу конца строки текстового файла.