Сегодня я не буду углубляться в синтаксис команд MySQL, а просто расскажу как писать и запускать MySQL скрипты.
Скрипты в общем случае используются для автоматизации выполнения каких-либо многократно повторяющихся действий (серии команд/запросов). Такие серии команд зачастую записываются в файл и выполняются программой для которой он был написан (Python, Perl, Bash, MySQL и т.п.).
MySQL скрипт представляет собой простой файл (с расширением *.sql, можно и без расширения) со списком запросов к базе данных и/или других команд MySQL.
Приведу пример создания таблицы 'accounts' в базе данных 'flats' используя MySQL скрипт.
Создадим файл с именем 'create_table' и поместим в него скрипт такого содержания:
DROP TABLE IF EXISTS accounts;
CREATE TABLE accounts (
id INT(11) NOT NULL AUTO_INCREMENT,
sum FLOAT DEFAULT 0.0,
minus_date DATE,
recommended_payment FLOAT,
prev_month_sum FLOAT,
PRIMARY KEY (id)
);
Скрипт содержит две команды. Первая команда удаляет из базы данных таблицу с именем 'accounts' если такова существует. Вторая команда создает новую таблицу с таким же именем.Далее запустим утилиту mysql, перейдём в базу данных, в которой желаем создать таблицу с именем 'accounts' и выполним следующую команду:
mysql> source /path_to_the_script/create_table
где path_to_the_script - является директорией в которой лежит скрипт (например, /home/john/).Выполнить скрипт можно и не запуская утилиту mysql:
$ mysql -u root -p < /path_to_the_script/create_table
но предварительно нужно добавить строку "USE flats;", т.к. база данных не выбрана и скрипт не знает для какой базы данных он выполняется. И теперь наш скрипт имеет следующий вид:USE flats;
DROP TABLE IF EXISTS accounts;
CREATE TABLE accounts (
id INT(11) NOT NULL AUTO_INCREMENT,
sum FLOAT DEFAULT 0.0,
minus_date DATE,
recommended_payment FLOAT,
prev_month_sum FLOAT,
PRIMARY KEY (id)
);
Во избежание добавления строки "USE flats;" можно запустить скрипт с параметром имени базы данных:$ mysql -u root -p flats < /path_to_the_script/create_table
Пишите скрипты с умом, применяйте их где считаете нужным, где это действительно упрощает процесс разработки и/или развёртывания, где рутинные команды используются многократно.Полезные ссылки:
http://www.rujel.net/distribute/install/mysqlscript
У меня вопрос. Можно при запуску скрипта передать ему какие-то параметры?
ОтветитьУдалитьНапример, если запустить это
mysql> source /path_to_the_script/create_table 'new_name_accounts'
то получим таблицу с именем new_name_accounts.
Если да, то как верно написать скрипт?