如何將使用 pg_dump 創建的僅數據轉儲載入到另一個數據庫?
我的開發伺服器上有兩個 PostgreSQL 數據庫,一個用於開發,另一個用於測試我的 Web 應用程序的生產。當我使用早期版本的 PostgreSQL 時,我能夠輕鬆地在 pgAdmin 中創建我的 prod 數據庫的 TAR 轉儲文件,並在選擇首先清理數據庫的選項後使用相同的 TAR 文件來恢復我的開發數據庫。不久前,我將 pgAdmin 升級到應該與 PostgreSQL 9.4 一起使用的版本(我認為是 1.20.0)。無論出於何種原因,我都無法恢復該版本中的文件。我嘗試過 TAR 和 SQL,但恢復按鈕始終受到保護。
我決定
pg_dump
為我的生產數據庫數據使用並創建一個僅包含插入語句的 SQL 文件。我想要做的是複制我在 pgAdmin 中能夠做的事情:清理我的開發數據庫並將我的pg_dump
SQL 文件載入到其中。我已經搜尋過,但到目前為止,我還沒有找到任何關於如何在 pgAdmin 或終端中執行此操作的範例。
如果您對在還原時重新創建表感到滿意(並且我認為沒有理由不高興:),那麼您可以使用以下
--clean
選項:-c –clean
在輸出用於創建數據庫對象的命令之前,輸出命令以清理(刪除)數據庫對象。(除非
--if-exists
還指定,如果目標數據庫中不存在任何對象,還原可能會生成一些無害的錯誤消息。)此選項僅對純文字格式有意義。對於存檔格式,您可以在呼叫時指定選項
pg_restore
。在創建純文字轉儲時使用它
pg_dump
,或者pg_restore
在使用任何其他格式時使用它。在這兩種情況下,您都需要完整轉儲,因為只有數據的轉儲會缺少創建表的資訊。**注意:**不要
INSERT
在轉儲中使用語句(在--inserts
中執行此操作pg_dump
)。它幾乎總是比依賴預設COPY
功能慢。