$ cat execute.sql.sh
#!/bin/bash
# Переменные, которые будут использованы для подстановки в скриптах sql
#!/bin/bash
# Переменные, которые будут использованы для подстановки в скриптах sql
USER=myuser
HOST=localhost
DATABASE=mydb
PASSWORD=mypassword
HOST=localhost
DATABASE=mydb
PASSWORD=mypassword
TYPE=InnoDB
ENCODING=utf8
COLLATE=utf8_general_ci
T=
#Переменные для установки соединения с правами привилегированного пользователя.
MYSQL=mysqlENCODING=utf8
COLLATE=utf8_general_ci
T=
#Переменные для установки соединения с правами привилегированного пользователя.
MYSQL_OPTIONS=-vvf
MYSQL_ROOT=root
MYSQL_PASS=
MYSQL_HOST=$HOST
MYSQL_PORT=
LOG=execute.sql.log
function __replace_symbols
{
if [ -f $1 ]
then
sed \
-e "s/@@USER@@/${USER}/" \
-e "s/@@HOST@@/${HOST}/" \
-e "s/@@DATABASE@@/${DATABASE}/" \
-e "s/@@PASSWORD@@/${PASSWORD}/" \
-e "s/@@TYPE@@/${TYPE}/" \
-e "s/@@ENCODING@@/${ENCODING}/" \
-e "s/@@COLLATE@@/${COLLATE}/" \
-e "s/@@T@@/${T}/" \
$1
else
echo "$1 not exists"
fi
}
echo "========================= $(date) ========================" >> $LOG
for sql in $*
do
__replace_symbols $sql | $MYSQL $MYSQL_OPTIONS -u $MYSQL_ROOT -h $MYSQL_HOST
done
Для использования создается набор скриптов DDL/DML например таких:
$ cat 000_create_database.sql
create database @@DATABASE@@ CHARACTER SET '@@ENCODING@@' COLLATE '@@COLLATE@@';
create database @@DATABASE@@ CHARACTER SET '@@ENCODING@@' COLLATE '@@COLLATE@@';
$ cat 000_create_user.sql
create user '@@USER@@'@'@@HOST@@' identified by '@@PASSWORD@@';
create user '@@USER@@'@'@@HOST@@' identified by '@@PASSWORD@@';
$ cat 000_grant_privileges.sql
grant all privileges on `@@DATABASE@@`.* to '@@USER@@'@'@@HOST@@';
grant all privileges on `@@DATABASE@@`.* to '@@USER@@'@'@@HOST@@';
$ cat 001_auth.sql
use @@DATABASE@@
set names '@@ENCODING@@';
CREATE TABLE IF NOT EXISTS `roles` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_name` (`name`)
) ENGINE=@@TYPE@@ DEFAULT CHARSET=@@ENCODING@@;
...
use @@DATABASE@@
set names '@@ENCODING@@';
CREATE TABLE IF NOT EXISTS `roles` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_name` (`name`)
) ENGINE=@@TYPE@@ DEFAULT CHARSET=@@ENCODING@@;
...
$ ./execute.sql.sh 000_create_database.sql 000_create_user.sql 000_grant_privileges.sql 001_auth.sql
Лично мне данный скрипт очень упрощает жизнь. Надеюсь, пригодится и вам.
Комментариев нет:
Отправить комментарий