2013-04-03 63 views
0

我在同一臺服務器上有兩個數據庫。一個名爲A,另一個名爲B. Booth數據庫具有相同的結構。我想清空數據庫B並使用數據庫A中的數據加載它。哪種方法是最好的方法?PostgreSQL:如何備份名稱爲A的數據庫並將其加載到名稱爲B的數據庫?

我試圖以普通格式備份數據庫A.然後打開生成的sql文件並用'B'替換'A'的每一個出現,然後運行sql-script。這工作,但我認爲它應該是一個更簡單的方法將數據從一個數據庫移動到另一個。是嗎?

我使用'pgAdmin III'作爲我的工具,但這不是必需的。

這是我在這裏的第一篇文章,希望這個問題相關性和結構足夠好。我首先嚐試谷歌,但發現很難找到任何人有同樣的問題。

在此先感謝! /大衛

解決方案:從克雷格的幫助後,我這是怎麼做的

pg_dump -Fc -a -f a.dbbackup A 

psql -c 'TRUNCATE table1, table2, ..., tableX CASCADE' 

pg_restore dblive.backup -d B -c (not sure if -c was necessary) 

回答

1

備份:

pg_dump -Fc -f a.dbbackup 

還原:

psql -c 'CREATE DATABASE b;' 
pg_restore --dbname b a.dbbackup 

使用-U-h etc選項來連接正確的主機作爲具有轉儲權限的正確用戶,創建和恢復數據庫。有關更多信息,請參閱psql,pg_dumppg_restore的文檔(它們都採用相同的連接控制選項)。

+0

pg_restore:選項-d/- dbname和-f/- 文件不能一起使用 –

+0

@DavidBerg我的錯誤,修復了 –

+0

輸入文件不需要標誌。但我不知道我是否可以完全刪除數據庫,並重新創建它,就像在你的例子中那樣(我假設你的意思是在創建語句之前我應該​​這樣做)。我也試着用'-c'標誌清理數據庫,但似乎並不奏效,因爲無論如何我都會得到'重複鍵值'的錯誤。 –

相關問題