在 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$;
Run Code Online (Sandbox Code Playgroud)
但这是说,
错误:无法从函数或多命令字符串执行 DROP DATABASE
这是我使用客户端脚本删除测试数据库的方法 (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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |