我試圖找到一種方法來備份我的數據庫設計,而不包括存儲在數據庫中的數據。實際上,有人可能會說我想要一個文件來保存數據庫中的所有「CREATE腳本」。理想情況下,這個文件可以用來重新創建數據庫(當然沒有數據)。PostgreSQL數據庫設計的備份 - 無數據
如何避免數據庫備份中的數據?
我使用的是pgAdmin 4.1.3和PostgreSQL 9.6。
我試圖找到一種方法來備份我的數據庫設計,而不包括存儲在數據庫中的數據。實際上,有人可能會說我想要一個文件來保存數據庫中的所有「CREATE腳本」。理想情況下,這個文件可以用來重新創建數據庫(當然沒有數據)。PostgreSQL數據庫設計的備份 - 無數據
如何避免數據庫備份中的數據?
我使用的是pgAdmin 4.1.3和PostgreSQL 9.6。
你可以使用這個在psql(終端) :
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"
解釋命令的作用以及給定選項的原因選擇將使這個答案更豐富和有用。 –
該示例不正確。如果你使用POSIX風格的選項,那麼你還需要使用'='符號,例如'--username = postgres'。空間與單個短劃線選項一起使用,例如'-U postgres'。 – isapir
的pg_dump
實用程序在bin
目錄裏帶有Postgres的。該實用程序接受許多options as documented,格式是:
pg_dump <options> <database-name>
要在這裏回答具體問題,(在* nix的外殼)打開命令提示符窗口,然後導航到Postgres的bin
目錄。然後發出以下命令(示視窗語法):
> 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腳本,可以通過任何有效的客戶端執行以重新創建所有對象。
這裏有一些其他有用的例子:
我通常前綴物化視圖與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
這是假設默認的主機,端口,認證等要指定非默認設置請參考documentation
點擊「僅架構」備份 –
['帶'--schema-only'選項的pg_dump'](https://www.postgresql.org/docs/current/static/app-pgdump.html)。 – Abelisto