Postgres CREATE EXTENSION所有数据库

时间:2017-02-09 14:27:48

标签: database postgresql

我在多个环境中安装了postgres。在每个环境中,我都有2个以上的数据库。

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

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

1 个答案:

答案 0 :(得分:12)

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中安装扩展程序。