PostgreSQL 批量执行脚本
现在有这样的一个需求,当前实例是一个 SAAS 版本的数据库,其上有大概 100 多个库,我现在要在这 100 多个数据库上都去执行一个 SQL 脚本,进行数据的初始化等操作。
要想实现这个功能我们首先需要创建一个 SHELL 脚本
[root@localhost ~]# cd /home/postgres/
[root@localhost postgres]# vi batch_execute_script.sh
#!/bin/bash
HOST="192.168.30.143"
PORT="5432"
USER="postgres"
PASSWORD="cloudhealth"
export PGPASSWORD=${PASSWORD}
psql -h $HOST -p $PORT -U $USER -d postgres -c "SELECT datname FROM pg_database WHERE datname like 'cloud%';" | tail -n +3 | head -n -2 > datname.txt
for i in `cat datname.txt`
do
psql -h $HOST -p $PORT -U $USER -d $i -f /usr/local/src/test.sql -o i.log
done
# cat datname.txt | while while read line;
# do
# echo $line
# psql -h $HOST -p $PORT -U $USER -d $line -f /usr/local/src/test.sql -o out.log
# done
说明:需要执行的 SQL 语句在 /usr/local/src/test.sql 文件中,我们只需要将需要执行的 SQL 语句放在这个文件中,然后执行这个脚本即可完成。