2017-02-09 5 views
3

Ich habe Postgres in mehreren Umgebungen installiert. In jeder dieser Umgebungen habe ich 2+ Datenbanken.Postgres CREATE EXTENSION Alle Datenbanken

Wenn ich über Superuser-Datenbankrechte verfüge, gibt es eine Möglichkeit, die CITEXT-Erweiterung für alle Datenbanken einer Postgres-Installation zu installieren?

Im Moment, sobald ich in einer Umgebung und in einer Postgres-Konsole angemeldet bin, muss ich CREATE EXTENSION IF NOT EXISTS citext; für jede Datenbank ausführen.

+1

müssen Sie es jedes DB einzeln getrennt again. Was Sie tun können, ist eine Bash-Schleife zu schreiben, um es gegen alle dbs –

Antwort

7

Der CREATE Befehl muss auf jede Datenbank einzeln ausgeführt werden, aber man kann dies leicht mit einem Shell-Skript automatisieren, zB:

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 

Wenn Sie citext wollen standardmäßig enthalten sein, wenn Sie ein erstellen neue Datenbank, Sie können die Erweiterung auch in template1 installieren.

+0

Gute von Ihnen, um echte Beispiel-Beispiel zu implementieren. –

Verwandte Themen