Postgresql-9.4

如何將使用 pg_dump 創建的僅數據轉儲載入到另一個數據庫?

  • November 25, 2015

我的開發伺服器上有兩個 PostgreSQL 數據庫,一個用於開發,另一個用於測試我的 Web 應用程序的生產。當我使用早期版本的 PostgreSQL 時,我能夠輕鬆地在 pgAdmin 中創建我的 prod 數據庫的 TAR 轉儲文件,並在選擇首先清理數據庫的選項後使用相同的 TAR 文件來恢復我的開發數據庫。不久前,我將 pgAdmin 升級到應該與 PostgreSQL 9.4 一起使用的版本(我認為是 1.20.0)。無論出於何種原因,我都無法恢復該版本中的文件。我嘗試過 TAR 和 SQL,但恢復按鈕始終受到保護。

我決定pg_dump為我的生產數據庫數據使用並創建一個僅包含插入語句的 SQL 文件。我想要做的是複制我在 pgAdmin 中能夠做的事情:清理我的開發數據庫並將我的pg_dumpSQL 文件載入到其中。

我已經搜尋過,但到目前為止,我還沒有找到任何關於如何在 pgAdmin 或終端中執行此操作的範例。

如果您對在還原時重新創建表感到滿意(並且我認為沒有理由不高興:),那麼您可以使用以下--clean選項

-c –clean

在輸出用於創建數據庫對象的命令之前,輸出命令以清理(刪除)數據庫對象。(除非--if-exists還指定,如果目標數據庫中不存在任何對象,還原可能會生成一些無害的錯誤消息。)

此選項僅對純文字格式有意義。對於存檔格式,您可以在呼叫時指定選項 pg_restore

在創建純文字轉儲時使用它pg_dump,或者pg_restore在使用任何其他格式時使用它。在這兩種情況下,您都需要完整轉儲,因為只有數據的轉儲會缺少創建表的資訊。

**注意:**不要INSERT在轉儲中使用語句(在--inserts中執行此操作pg_dump)。它幾乎總是比依賴預設COPY功能慢。

引用自:https://dba.stackexchange.com/questions/121909