2017-02-09 90 views
3

我已经在多个环境中安装了postgres。在每一种环境中,我都有2+数据库。Postgres创建扩展所有数据库

如果我有超级用户数据库权限,有没有办法在给定的postgres安装上为所有数据库安装CITEXT扩展?

截至目前,一旦登录到环境和postgres控制台中,我必须为每个数据库运行CREATE EXTENSION IF NOT EXISTS citext;

+1

你必须分别运行它agaist每个数据库。你可以做什么就是写一个bash循环来运行它反对所有dbs –

回答

7

CREATE命令确实需要每个数据库单独运行,但你可以很容易地与一个shell脚本自动执行此,如:

for DB in $(psql -t -c "SELECT datname FROM pg_database WHERE datname NOT IN ('postgres', 'template0', 'template1')"); do 
    psql -d $DB -c "CREATE EXTENSION IF NOT EXISTS citext" 
done 

如果你想,只要你创建citext在默认情况下被列入新的数据库,你也可以在template1安装扩展。

+0

好你包括真正的示例脚本示例。 –