簡體   English   中英

PostgreSQL 數據庫設計的備份 - 無數據

[英]Backup of PostgreSQL database design - without data

我試圖找到一種方法來備份我的數據庫設計,而不包括存儲在數據庫中的數據。 實際上,有人可能會說我想要一個包含數據庫中所有“CREATE Scripts”的文件。 理想情況下,此文件可用於重新創建數據庫(當然沒有數據)。

如何避免數據庫備份中的數據?

我正在使用 pgAdmin 4.1.3 和 PostgreSQL 9.6。

您可以從 psql(terminal) 使用它:

pg_dump -s databasename > file.dump

從 pg_dump 文檔中,“-s”僅轉儲對象定義(架構),而不轉儲數據。

pg_dump 文檔

pg_dump --host localhost --port 5432 --username "userName" --schema-only --verbose --file "file path" "db_dev_local"

TL;DR:使用pg_dump設置--schema-only

pg_dump實用程序與 Postgres 一起在bin目錄中分發。 該實用程序接受許多記錄的 選項,格式為:

pg_dump <options> <database-name>

要具體回答此處的問題,請打開命令提示符窗口(*nix 中的 Shell),然后導航到 Postgres bin目錄。 然后發出以下命令(顯示的是 Windows 語法):

> set DB_NAME=mydatabase
> pg_dump.exe --username=postgres --schema-only %DB_NAME% >%DB_NAME%-schema.sql

DB_NAME環境變量純粹是為了方便起見,為了簡單起見,可以內聯名稱。

在大多數情況下需要--username開關,因為您可能沒有以有效的 Postgres 用戶身份登錄到您的操作系統。

--schema-only開關指示您只需要 DDL 語句,而不需要實際數據。

>%DATABASE_NAME%-schema.sql部分將控制台的輸出重定向到名為%DATABASE_NAME%-schema.sql的文件,在本例中為“mydatabase-schema.sql”。

生成的文件是一個有效的 SQL 腳本,它可以通過任何有效的客戶端執行以重新創建所有對象。

以下是一些其他有用的示例:

我通常在 MATERIALIZED mv_加上mv_ ,所以為了只轉儲以“mv_*”開頭的關系的定義,我使用:

> pg_dump --username=postgres --schema-only --table=mv_* %DB_NAME% >%DB_NAME%-matviews.sql

對多個模式使用多個--table=參數。

要僅編寫 POST-DATA 對象(例如索引、觸發器等)的腳本,請使用--section=post-data

> pg_dump --username=postgres --section=post-data %DB_NAME% >%DB_NAME%-post-data.sql

這假定默認主機、端口、身份驗證等。要指定非默認設置,請參閱 文檔

上數據庫-<工具->備份

然后轉儲選項

檢查唯一模式為真

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM