gpt4 book ai didi

postgresql - 如何在Postgresql中删除所有以前缀开头的数据库

转载 作者:行者123 更新时间:2023-12-02 19:53:39 25 4
gpt4 key购买 nike

在 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$;

但是那是说,

ERROR: DROP DATABASE cannot be executed from a function or multi-command string

最佳答案

这就是我使用客户端脚本 (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

关于postgresql - 如何在Postgresql中删除所有以前缀开头的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com