在Postgresql中,我有几个以 hdb 前缀开头的数据库。
我正在寻找的是强制删除所有此类数据库,并终止现有连接(如果有)。
我尝试了以下方式:
DO
$do$
DECLARE
_db text;
BEGIN
FOR _db IN
SELECT datname FROM pg_stat_activity where datname ilike 'hdb%'
LOOP
EXECUTE 'REVOKE CONNECT ON DATABASE ' || _db||' FROM public;';
EXECUTE 'DROP DATABASE ' || _db;
END LOOP;
END
$do$;
但是,
错误:无法从函数或文件中执行DROP DATABASE 多命令字符串
答案 0 :(得分:0)
这是我使用客户端脚本(Linux)删除测试数据库的方式:
#!/bin/bash
PREFIX='hdb'
export PGPASSWORD=postgres
export PGUSER=postgres
export PGHOST=localhost
export PGPORT=5432
TEST_DB_LIST=$(psql -l | awk '{ print $1 }' | grep '^[a-z]' | grep -v template | grep -v postgres)
for TEST_DB in $TEST_DB_LIST ; do
if [ $(echo $TEST_DB | sed "s%^$PREFIX%%") != $TEST_DB ]
then
echo "Dropping $TEST_DB"
dropdb --if-exists $TEST_DB
fi
done