2017-04-05 67 views
1

我試圖找到一種方法來備份我的數據庫設計,而不包括存儲在數據庫中的數據。實際上,有人可能會說我想要一個文件來保存數據庫中的所有「CREATE腳本」。理想情況下,這個文件可以用來重新創建數據庫(當然沒有數據)。PostgreSQL數據庫設計的備份 - 無數據

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

我使用的是pgAdmin 4.1.3和PostgreSQL 9.6。

+0

點擊「僅架構」備份 –

+2

['帶'--schema-only'選項的pg_dump'](https://www.postgresql.org/docs/current/static/app-pgdump.html)。 – Abelisto

回答

0

在數據庫上一步 - <工具 - >備份

然後轉儲選項

檢查僅模式是真實的

enter image description here

3

你可以使用這個在psql(終端) :

pg_dump -s databasename > file.dump 

來自pg_dump文檔,「-s」僅轉儲對象定義(模式),而不轉儲數據。

pg_dump documentation

+0

我對PostgreSQL相當陌生,並且只使用pgAdmin訪問過數據庫。那麼如何打開一個接受'pg_dump'命令的命令解釋器呢? (數據庫不在我的電腦上,但在一些遠程服務器上。) – Helge

+0

它是一個Linux服務器嗎?您使用什麼操作系統? –

+0

我正在使用Windows 7. – Helge

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

解釋命令的作用以及給定選項的原因選擇將使這個答案更豐富和有用。 –

+0

該示例不正確。如果你使用POSIX風格的選項,那麼你還需要使用'='符號,例如'--username = postgres'。空間與單個短劃線選項一起使用,例如'-U postgres'。 – isapir

0

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