我想备份我的postgres数据库中的所有函数.如何仅在Postgres中备份功能?

推荐答案

使用pg_getfunctiondef;见system information functions.PostgreSQL 8.4中添加了pg_getfunctiondef.

SELECT pg_get_functiondef('proc_name'::regproc);

要转储模式中的所有函数,可以在pg_catalog中查询系统表;如果你想要public的一切:

SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';

如果你想要的话,把上面的改成"from all schemas except those beginning with 100"是很简单的.

psql中,您可以通过以下方式将其转储到文件:

psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__

要在另一个DB中运行输出,请使用以下命令:

psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name

但是,如果您在这样的DBS之间复制函数,请考虑将函数定义的授权副本作为SQL脚本存储在诸如SN或Git的修订控制系统中,最好打包为PostgreSQL扩展.见packaging extensions.

Postgresql相关问答推荐

使用RANGE窗口框架条款将SUM分析函数从PostgreSQL移至Redwitch

有没有方法可以设置postGER中非空列的默认值?

Redis作为postgreSQL嵌套数据的缓存

可以向判断枚举值的SQL列添加约束吗?

DBT-DBT依赖于未找到的源

当条件的计算结果为假(或真)时停止执行查询

需要用 jack/pgx 更新 golang 中复合类型的 PSQL 行

为什么在 PostgreSQL 中忽略查询超时?

Supabase 数据库大小问题

Docker compose read connection reset by peer error on pipeline

如何从元组列表中 Select 与多列匹配的行?

将 Postgres 与 Grails 一起使用

如何防止materialized 视图在 pg_restore 期间刷新?

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

为什么 PostgreSQL 数组访问在 C 中比在 PL/pgSQL 中快得多?

如何只允许一个表的一行?

用于更改 postgresql 用户密码的 bash 脚本

Django 1.9.2 AssertionError:database connection isn't set to UTC

在 postgresql 中对使用 array_agg 创建的文本聚合进行排序

由于不支持身份验证类型 10,无法连接到 Postgres DB