[英]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 --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.