如何删除除postgres中的少数数据库之外的所有数据库

Man*_*shD 20 database postgresql

我想删除除少数数据库之外的所有数据库.让我们说有20个数据库,我想删除18个,但保留2个,因为它是最新的并且正在使用中.

请建议.

nta*_*lbs 38

首先,在psql终端中执行以下查询.

select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;
Run Code Online (Sandbox Code Playgroud)

这将为drop database所有数据库生成命令.将结果复制到文本编辑器中,排除(删除)要保留的内容并将其另存为dd.sql文件.并执行它:

psql -d postgres -f dd.sql
Run Code Online (Sandbox Code Playgroud)

  • 可选: `psql -d postgres < <( psql -Atc "select 'drop database \"'||datname||'\";' from pg_database where datistemplate=false /* AND add_extra_conditions_here */;")` (2认同)

小智 12

现在,您可以在 pgAdmin 中选择数据库的属性,选择要删除的数据库,然后单击删除/删除。快捷方便!删除选定的数据库: 删除选定的数据库


kra*_*mer 5

正如接受的答案所表明的那样,删除多个数据库对我来说特别繁琐,因此我编写了一个帮助脚本来减轻此操作:https : //github.com/Kraymer/ezdropdb

简而言之,您输入一个模式,您要禁止的数据库必须匹配,然后列出所有 db 名称结果,并且有一个最终提示,您可以在其中输入要删除的那些(参见项目页面上的屏幕截图)。