如何删除匹配模式的postgresql数据库?

La *_* PT 6 database postgresql pattern-matching

使用pgAdmin III,我可以在postgresql服务器上列出所有数据库.

但是使用pgAdmin,我当时只能删除1个数据库.需要花费大量时间来删除,例如,30个数据库,一个接一个......

那么,您的删除方法是什么,例如,所有名称中包含"june"一词的数据库?

可能我将不得不构建一个Bash脚本.没问题.但是你会在这个脚本中使用哪个命令?

我已经在网上搜索了好几个小时而没有成功解决这个问题......

感谢帮助.

Abe*_*sto 5

psql -c "copy (select datname from pg_database where datname like '%june%') to stdout" | while read line; do
    echo "$line"
    #dropdb -i "$line"
done
Run Code Online (Sandbox Code Playgroud)

或者使用for更可靠的循环(while在父上下文中执行的块,因此有必要为其主体执行一些额外的移动):

for dbname in $(psql -c "copy (select datname from pg_database where datname like '%june%') to stdout") ; do
    echo "$dbname"
    #dropdb -i "$dbname"
done
Run Code Online (Sandbox Code Playgroud)

此外选项-Xpsql(不使用~/.psqlrc文件)可以很好的避免不必要的输出.

对于psqldropdb实用程序,您可能需要提供连接选项(请参阅文档)