Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода ТОБД.doc
Скачиваний:
24
Добавлен:
13.04.2015
Размер:
8.25 Mб
Скачать

Задание 4. Создание командных файлов и файлов сценариев для вставки данных в базу данных.

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

Ниже приводится листинг сценария lab13_02.sql (рис. 3.204), выполняющий действия по автоматизации вставки информации в базу данных.

Листинг сценария ввода данных.

Рис. 3.204. Листинг lab13_02.sql ввода данных в таблицу customers базы данных books.

Сценарий, показанный на рис. 3.204, можно запустить через MySQL следующим образом (если путь к системе указан в Pach Вашей машины):

> mysql -h localhost -u root –p < lab13_02.sql

Однако, при выполнении лабораторных работ в дисплейных классах университета, чаще всего, доступ к системным ресурсам ЭВМ закрыт паролем.

Поэтому приходится исполнять ряд вспомогательных действий:

  1. Перейти в командный процессор Cmd.exe.

Запустить консоль: Пуск -> Выполнить -> "cmd".

  1. Указать путь, где находится исполняемый модуль MySQL.exe.

Перейти в каталог c:\webservers\usr\local\Mysql5\bin\ , используя команду OC смены директория: cd.

  1. Указать параметры входа в Mysql и путь к сценарию Lab13_02Ins.sql.

Запустить клиент: mysql -u root –p набрав на клавиатуре строку:

c:\Webservers\usr\local\mysql5\bin\mysql -h localhost -u root -D books -p --character-sets-dir="c:\Webservers\usr\local\mysql5\share\charsets" < C:\WebServers\home\localhost\www\php\Lab13_02Ins.sql

Введенная информация в Dos окне имеет плохо читаемый вид:

  1. После ввода указанной строки в шаге 3 и нажатия Enter, подтвердить пароль.

  1. Правильный ввод пароля выведет следующую информацию на экран в виде как показано на рис. 3.205.

Рис. 3.205. Таблица customers базы данных BOOKS.

Обратите внимание, что вывод содержимого таблицы на рис. 3.205 осуществляется за счет команды , вставленной вLab13_02Ins.SQL сценарий, представленный на рис. 3.204. Кроме того, использование команды , позволяет согласовать кодировку сPhpMyadmin.

На рис. 3.206 показано состояние таблицы customers базы данных books средствами PhpMyAdmin.

Рис. 3.206. Таблица customers базы данных books в PhpMyAdmin.

Сценарий показанный на рис. 3.204 можно поместить в пакетный файл Insmysql.bat, как показано на рис. 3.207. В этом же файле указываются все необходимые данные, которые ранее вводились в окне Cmd.exe. Набрать содержимое файла Insmysql.bat можно в любом текстовом редакторе.

Рис. 3.207. Состав пакетного файла Insmysql.bat.

Заметьте, что содержимое файла, например в Блокноте, будет представлено в виде одной строки (конец строки на рис. 3.208 не виден).

Рис. 3.208. Изображение пакетного файла Insmysql.bat в Блокноте.

Использовать командный файл Insmysql.bat можно, указав его в командной строке менеджера файлов (например, Total Commander рис. 3.209).

Рис. 3.209. Вызов пакетного файла Insmysql.bat.

Вызов пакетного файла Insmysql.bat приведет к окну (рис. 3.210), указав в котором пароль, получим сообщение о составе таблицы customers (рис. 3.211).

Рис. 3.210. Этап работы пакетного файла Insmysql.bat.

В файле Insmysql.bat (рис. 3.207) использована команда перенаправления , приказывающая вызвать на обработку файл сценарий

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

В файле сценария (рис. 3.204) использована команда

,

которая осуществляет выборку (и вывод на экран в данном случае) всей информации из таблицы customers (рис. 3.211).

Заметьте, что строка с номером 6 (рис. 3.211) соответствует строке с номером 5 на этом же рисунке.

Рис. 3.211. Результат работы пакетного файла Insmysql.bat.

Проанализировать информацию, показанную на рис. 3.211, достаточно трудно, т.к. она только промелькнет на экране и окно с ней закроется автоматически. Чтобы увидеть и проанализировать информацию можно воспользоваться средствами PhpMyAdmin или прочитать ее через монитор MySQL.

Однако, если модифицировать файл Insmysql.bat (рис. 3.207) и вставить в нем команду вывода результатов во внешний файл(рис. 3.212), то результат работы (рис. 3.211) становится доступен через любой редактор.

Рис. 3.212. Модификация пакетного файла Insmysql.bat.

Далее (рис. 3.218) будет показано, как следует модифицировать пакетный файл (рис. 3.212), чтобы имя файла являлось в нем формальным параметром.

Ниже приводится листинг сценария lab13_03.sql (рис. 3.215), выполняющий действия по вставке информации в базу данных, схема которой представлена на рис. 3.212 и для удобства продублирована ниже (рис. 3.214).

Для продолжения работы очистите таблицу Customers. Для этого перейдите в монитор MySQL (CmySql.bat) и выполните команды USE BOOKS и DELETE FROM customers (рис. 3.213).

Рис. 3.213. Использование команды Delete - чистки таблицы базы.

Customers (CustomerId, Name, Address, City) - Клиент

Оrders (ОrderId, CustomerId, Аmount, Date) - Заказ

Books (ISBN, Author, Title, Price) - Книга

Оrder_items (ОrderId, ISBN, Quantity ) - Покупка

Рис. 3.214. Схема тестовой базы.

Листинг (lab13_03.sql) ввода данных в таблицы базы данных для схемы рис. 3.214.

use books;

SET NAMES cp1251;

insert into customers values

(1, "Петр Петров", "пр. Мира д.7", "Москва"),

(2, "Юлия Вонг", "ул. Шевченко д.1, кв 5", "Киев"),

(3, "Ян Дрибас", "пр. Зорь д.5, кв. 12 ", "Минск");

insert into orders values

(NULL, 3, 69.98, "2009-12-02"),

(NULL, 1, 49.00, "2009-12-15"),

(NULL, 2, 74.98, "2009-12-19"),

(NULL, 3, 24.99, "2010-02-01");

insert into books values

("0-672", "Люк Морган", "Java 2 для профессионалов", 34.99),

("0-673", "Дж. Даун", "Инсталляция GNU/Linux", 24.99),

("0-674", "В. Дрибас", "Основы баз данных", 24.99),

("0-675", "М. Цаленко", "Алгебра баз данных", 49.99);

insert into order_items values

(1, "0-672", 2),

(2, "0-675", 1),

(3, "0-675", 1),

(3, "0-674", 1),

(4, "0-673", 3);

SET NAMES cp866;

select * from customers;

select * from orders;

select * from books;

select * from order_items;

Рис. 3.215. Исходные данные для вставки в базу данных books.

Для ввода данных, представленных на рис. 3.215, создадим пакетный файл с именем . Местоположение файла показано на рис. 3.216.

Рис. 3.216. Местоположение командного файла INSxSQL.bat.

Состав файла приведен ниже (рис. 3.217 или рис. 3.218)

Рис. 3.217. Отображение файла INSxSQL.bat в редакторе Scite.

Рис. 3.218. Состав файла INSxSQL.bat.

Обратите внимание, что состав файла INSxSQL.bat и файла соответствует файлу Insmysql.bat, за исключением элемента , который подменяет имя вызываемогоSQL-сценария.

Использование подобного механизма подмены, позволяет вызывать сценарий Lab13_03.sql в работу с командной строки менеджера файлов следующим образом (рис. 3.219).

Рис. 3.219. Вызов INSxSQL.bat с параметром исполняемого файла.

Исполнение занесет информацию в таблицы базы данныхBooks, но на экране промелькнет только Dos окно.

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

Например, щелкнув мышкой на имени пакетного файла в окне менеджера файлов (см. рис. 3.219) мы получим приглашение вMysql, после которого укажем команду открытия базы данных (use books;), установки кодировки CP866 (set names cp866) и команду показа содержимого таблицы (например, SELECT * FROM customers;) (рис. 3.220).

Рис. 3.220. Вызов монитора MySQL и открытие базы.

Естественно, что в команде SELECT может быть указана любая необходимая нам таблица базы данных.

Для выполнения следующих тестов выйдите из Mysql, используя команду Exit.

Следующий пример показывает реакцию MySQL, если оператор ошибочно повторит ввод в командной строке информации , показанной на рис. 3.219.

По определению схемы (рис. 3.214) атрибут CustomerId в таблице Customers является ключевым (т.е. не допускает дубликатов хранимых значений атрибута), поэтому СУБД MySQL выдаст следующее сообщение:

Приведенное сообщение промелькнет в окне и прочитать его очень трудно. Чтобы увидеть и проанализировать данное сообщение необходимо вызвать командный процессор Cmd.exe (рис. 3.221).

Рис. 3.221. Вызов командного процессора.

Окно командного процессора представлено на рис. 3.222.

Рис. 3.222. Окно командного процессора с приглашением для ввода информации.

Если в приглашении ввести имя командного файла с параметром имени исполняемогоSQL сценария:

,

то ошибка, обнаруженная Mysql, останется на экране (рис. 3.223).

Рис. 3.223. Окно командного процессора с ошибкой ввода информации.

Следующий прием показывает применение текстового файла для контроля вводимой информации. Для удобства вычистим все таблицы базы данных, воспользовавшись средствами PhpMyadmin.(рис. 3.224).

Рис. 3.224. Окно PhpMyadmin с таблицей books базы данных books.

Используя кнопку (рис. 3.224) последовательно удалим все записи из четырех таблиц базы данных.

Далее воспользовавшись командным процессором (см. рис. 3.221), введем в полученное приглашение следующую информацию:

insxsql.bat lab13_03ins.sql >1.txt

Рис. 3.225. Использование перенаправления в командной строке.

Содержимое файла 1.txt (имя может быть любое) (рис. 3.226) можно посмотреть через любой текстовый редактор.

Рис. 3.226. Результат работы командного файла в текстовом файле.

Как видно из рис. 3.226 содержимое файла 1.txt соответствует информации приведенной на рис. 3.215.