8/26/2012

MySQL скрипты


Сегодня  я не буду углубляться в синтаксис команд 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

1 комментарий:

  1. У меня вопрос. Можно при запуску скрипта передать ему какие-то параметры?
    Например, если запустить это
    mysql> source /path_to_the_script/create_table 'new_name_accounts'
    то получим таблицу с именем new_name_accounts.
    Если да, то как верно написать скрипт?

    ОтветитьУдалить