微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个Postgresql数据库,其中加载了PostGIS功能.我想转储数据库的模式,但是pg_dump -s会将这些函数与表定义一起转储出来.

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

解决方法

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

您可以将所有函数移动到可以从转储中排除的专用模式,如下所示:

pg_dump mydb -N function_schema > mydump.sql

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

ALTER FUNCTION myfunc() SET SCHEMA function_schema;

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

SET search_path = public,function_schema [,more schemas]

作为替代方案,您可以将函数保留在其认模式中,而不是将该模式用于其他任何模式.将对象放在一个或多个单独的模式中.这应该使升级PostGis更容易.

通常不要将公共模式用于对象.我通常会为PostGis或认安装到公共场所的其他扩展程序保留它.我喜欢为每个应用程序使用专用模式.使维护更容易 – 包括备份和授予权限.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐