Postgres CREATE EXTENSION所有数据库

Cha*_*d M 5 database postgresql

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

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

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

Nic*_*nes 15

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
Run Code Online (Sandbox Code Playgroud)

如果您希望citext在创建新数据库时默认包含,则还可以在其中安装扩展template1.

  • 如何在不使用“psql”的情况下做同样的事情? (2认同)
  • @NickBarnes我在Docker中使用initdb脚本,我只能运行“.sql”文件。 (2认同)