2012-03-09 50 views
4

我有一個PostgreSQL數據庫,並在其中加載了PostGIS函數。我想轉儲出數據庫的模式,但pg_dump -s會將函數和表定義一起轉出。轉儲PostgreSQL數據庫時排除函數定義

有沒有辦法排除功能,只是轉儲表定義?

回答

6

據我所知,pg_dumppg_dumpall不支持任何此類限制。

可以轉移全部功能的專用模式,你可以從轉儲排除這樣的:如果你走這條路線,你可以migrate functions to another schema這樣

pg_dump mydb -N function_schema > mydump.sql 

ALTER FUNCTION myfunc() SET SCHEMA function_schema; 

在這種情況下,我也會調整search_pathpostgresql.conf(可能還有數據庫和角色的默認值)

SET search_path = public,function_schema [,more schemas] 

作爲替代,你可以離開的功能在其默認模式public,並且不使用該模式爲別的。把你的對象放在一個或多個獨立的模式中。這應該會使PostGis的升級變得更容易。

不是對您的對象使用public架構通常是一個好主意。我通常保留它爲PostGis或默認安裝到public的其他擴展。我喜歡爲每個應用程序使用專用模式。使維護更簡單 - 包括備份和授予權限。

+1

或者,您可以使用pg_restore的--list相關選項並手動修剪生成的列表中的項目。 – 2012-03-09 14:07:04

+0

看到這個例子:http://stackoverflow.com/a/31043192/985 – 2015-06-25 06:53:50