通常在向现有项目中添加功能时,我会遇到类似(列出数据库的结果)
project_x_001, ..., project_x_00n
我需要通过删除所有以某种特定模式开头的数据库(在这种情况下为project_x _ *
)来清理数据库在PostgreSQL中,是否有任何优雅的(更清洁的)方法可以做到这一点,
drop database project_x_001, ..., project_x_00n;
列表有时太长,您每次都需要列出数据库并删除其中的一部分
答案 0 :(得分:2)
那是不可能的,请参见the documentation。
答案 1 :(得分:2)
以下解决方案适用于Ubuntu
for db in `psql -c '\l' | grep project_x_* | cut -d '|' -f 1`; do psql -c "drop database $db"; done
基本上,以上命令使用grep遍历所选数据库;请在从数据库中删除任何内容之前查看该选择的结果。
答案 2 :(得分:1)
我需要对@rachid的答案进行一些修改,因为我的数据库名称导致以下字符的语法无效:“-”
我的数据库名称可怕地像testrun-ppsubscriptions-1597745672749-276
因此需要将其修改为:
for db in `psql -c '\l' | grep testrun* | cut -d '|' -f 1`; do psql -c "drop database \"$db\" "; done
谢谢@rachid!