Postgresql
如何迭代備份postgresql中的所有數據庫?
我在 postgresql 9.5 中有大量數據庫,我想使用 pg_dump 工具對其進行備份。每個備份都應從相應的數據庫中獲取其名稱。
當我跑步時
SELECT datname FROM pg_database WHERE datistemplate=false and datname!='postgres';
在 psql 終端中,它會正確顯示所有數據庫名稱。我現在的問題是如何在循環內的 pg_dump 中使用它(如果需要,在批處理腳本中),以便每個數據庫都使用其相應的名稱進行備份。
像這樣的東西:
FOR %%d IN ("SELECT datname FROM pg_database WHERE datistemplate=false and datname!='postgres'") DO( %pgdump% %%d -f %%d.backup )
當我執行它時,什麼也沒有發生。
我正在使用 Windows 10,非常感謝任何幫助/提示。謝謝你。
這更像是一個 Windows 問題,而不是 Postgres 問題。但以下對我有用:
psql -U postgres -c "\copy (SELECT datname FROM pg_database WHERE NOT datistemplate and datname not in ('postgres')) to dblist.txt" for /f "tokens=1 delims= " %%i in (dblist.txt) do ( pg_dump -U postgres -Fc --file=%%i.pgdump %%i )