多postgresql库批量执行SQL脚本文件

来源:互联网 发布:科技网络报修电话 编辑:程序博客网 时间:2024/05/20 07:33

1、编辑pgpass文件
pgpass文件内容格式为:     地址:端口:数据库名称:用户名:密码
cd ${HOME}
vi .pgpass
编辑如 :192.168.1.90:5432:ABCD:odoo:odoo
保存后  chmod 600 .pgpass
2、编辑shell脚本
mkdir shell
cd shell 
 mkdir back #存放备份文件
 vi execute_sql.shell

 
#!/bin/bash
DATE=$(date +%Y%m%d)
DIR="sql_back_${DATE}"
HOST="192.168.1.90"
PORT="5432"
USER="odoo"
PASSWORD="odoo"
#通过查询pg_database表根据datname字段查询出需要批量执行的库
datanames=`psql -h $HOST -d ABCD -U $USER -c"SELECT datname FROM pg_database;"|tail -n +3|head -n -2`
#清空.pgpass文件
echo "" >${HOME}/.pgpass
for dataname in $datanames
do
#遍历往.pgpass文件写数据,因为psql没提供-p 输密码的参数,所以只能通过.pgpass
echo $HOST:$PORT:$dataname:$USER:$PASSWORD >>${HOME}/.pgpass
#执行SQL脚本
psql -h $HOST -d $dataname -U $USER -f *.sql -o out.log
done
#备份执行脚本
cd ${HOME}/shell/back
 mkdir "$DIR"
mv ../*.sql ./$DIR
#注释都是后来自己写的,可能格式有问题,呜呜~~,请自己调下





 
3、执行脚本
1)将后缀为sql的脚本文件放到与execute_sql.shell同级目录下
 2)sh   execute_sql.shell
3) SQL脚本执行完成后会自动备份

0 0
原创粉丝点击