2017-02-09 132 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

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