2012-04-26 61 views
5

我使用EMS SQL管理器的PostgreSQL和我需要轉儲困難的數據庫(域,300 +存儲過程/函數,觸發器,數據等)。 此工具無法執行此操作。PostgreSQL:轉儲和恢復

請指教我一個很好的postgres GUI工具。

回答

11

您可以隨時使用命令行實用程序。
轉儲羣集:

pg_dumpall -p 5432 > /path/to/my/dump_file.sql 

轉儲單個數據庫:

pg_dump -p 5432 mydb > /path/to/my/mydb_dump.sql 

只輸出模式:

pg_dump -p 5432 mydb -s > /path/to/my/mydb_dump_schema.sql 

More in the manual.


如果要還原到一個空的數據庫,你可能想之前運行恢復:

DROP DATABASE IF EXISTS mydb; 
CREATE DATABASE mydb; 

不需要在這種情況下pg_dump--clean選項。

+0

恢復目標數據庫必須爲空。是否有任何解決方案添加'刪除如果存在...'轉儲? – DmitryR 2012-04-26 16:39:59

+0

@DmitryR:我在回答中加了一點。 – 2012-04-26 17:04:41

3

pgAdmin3會訣竅,它包含在安裝程序中的pg_dump和pg_restore。

+0

由於此源。我不喜歡這個工具,因爲它的禁慾界面。 BTW pg_dump沒有像'delete ... if ... exists'這樣的轉儲選項,它只有'-c'選項 – DmitryR 2012-04-26 16:07:52

+1

這是一個有趣的問題。爲什麼pg_dump必須刪除一些東西?是的,pg_dump是從我知道的數據庫中進行正確轉儲的唯一方法,所有GUI工具都在後臺使用這一軟件。 – 2012-04-26 16:11:52

+0

另外,'--clean'選項有什麼問題?如果要恢復時要刪除的對象不存在,則不會中斷。 – 2012-04-26 16:16:09

0

備份你的數據庫沒有工具needed.we可以與終端

的所有命令都應該運行的Postgres的用戶做。

sudo su - postgres 

備份單個數據庫

pg_dump db_name > db_backup.sql 

恢復單個數據庫

psql db_name < db_backup.sql 

備份整個postgres的數據庫集羣

pg_dumpall > cluster_backup.sql 

恢復整個postgres的數據庫集羣

psql -f cluster_backup.sql postgres 

,給予多個命令backup commands