我想删除除少数数据库之外的所有数据库。 假设有20个数据库,我想删除其中的18个,但保留2个,因为它是最新的并且正在使用中。
请建议。
答案 0 :(得分:36)
首先,在psql终端中执行以下查询。
select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;
这将为所有数据库生成drop database
命令。将结果复制到文本编辑器中,排除(删除)要保留的内容并将其另存为dd.sql
文件。并执行它:
psql -d postgres -f dd.sql
答案 1 :(得分:4)
正如接受的答案有点证明,删除多个数据库对我来说特别乏味,所以我写了一个帮助脚本来缓解这个操作:https://github.com/Kraymer/ezdropdb
简而言之,您输入一个模式,您要抑制的数据库必须匹配,然后列出所有数据库名称结果,并有一个最终提示,您可以在其中输入要删除的数据库(参见项目页面上的屏幕截图)。
答案 2 :(得分:2)