2017-04-25 45 views
2

假設我有兩臺主機服務器s1和s2。在兩臺服務器中,我都有一個名爲n1的模式,現在我對s1的模式n1中的一些表進行了一些更改。我希望對服務器s2的模式n1進行相同的更改。我打算做的是使用pg_dump備份服務器s1的模式n1,並使用pg_restore在服務器s2中進行恢復。現在我的問題是,因爲在服務器s2中已經有相同的模式n1和相同的一組表。恢復過程將做什麼?它會覆蓋現有的表還是應刪除服務器s2的現有模式並使用服務器s1的轉儲進行恢復?將pg_restore覆蓋現有的表?

+0

如果要在還原之前刪除對象,請嘗試pg_resotre的--clean選項。 https://www.postgresql.org/docs/current/static/app-pgrestore.html – Jayadevan

回答

6

如果您使用--clean選項pg_restore,舊錶將在創建新表之前被刪除。

如果您不使用--clean選項,您將收到一條錯誤消息表,該表已存在,但pg_restore將繼續處理,除非使用--exit-on-error選項。

+0

--clean選項只會刪除那些已經存在的表?或所有表格在場?我的意思是如果假設我在現有模式中有一些額外的表格,它會被保留下來嗎? – Karthik

+1

它只會刪除它嘗試還原的那些表。其他表格將保持不變。 –

+0

感謝您的幫助:) – Karthik