2010-05-13 78 views
4

我想找出(并删除)postgres所有者拥有的所有数据库8.4.3我也是postgres的新手,尽管今天我可以并且会阅读整本手册,但我不得不使用如何获取用户拥有的数据库列表?

for i in $(psql -l |grep novicedba | awk '{print $1}') 

psql -d postgres -c " drop database \"$i\"" 

出于绝望。什么是postgresql的方式来做到这一点?

回答

5

相反grepping为novicedba的,可以运行在pg_database里表的SQL查询:

SELECT datname 
FROM pg_database JOIN pg_authid ON pg_database.datdba = pg_authid.oid 
WHERE rolname = 'novicedba' 

一旦你有,你就可以遍历行和每下降一个。这比第一种方法更安全,因为它检查确切的所有者字段,而不是子字符串的整行输出。

相关问题