转储PostgreSQL数据库时排除函数定义

时间:2012-03-09 00:13:54

标签: postgresql database-schema dump

我有一个PostgreSQL数据库,其中加载了PostGIS功能。我想转储数据库的模式,但pg_dump -s转储函数以及表定义。

有没有办法排除这些函数,只是转储表定义?

1 个答案:

答案 0 :(得分:6)

据我所知,pg_dumppg_dumpall不支持任何此类限制。

可以将所有功能移动到专用架构,您可以将其从转储中排除,如下所示:

pg_dump mydb -N function_schema > mydump.sql

如果你走这条路,你可以migrate functions to another schema这样:

ALTER FUNCTION myfunc() SET SCHEMA function_schema;

在这种情况下,我还会调整search_path中的postgresql.conf(可能还有数据库和角色的默认值)

SET search_path = public,function_schema [,more schemas]

作为替代,您可以将这些函数保留在其默认架构public中,而不是将该架构用于其他任何架构。将对象放在一个或多个单独的模式中。这应该会使PostGis的升级变得更容易。

对您的对象使用public架构通常是个好主意。我通常会为PostGis或默认安装到public的其他扩展程序保留它。我喜欢为每个应用程序使用专用模式。使维护更容易 - 包括备份和授予权限。