gpt4 book ai didi

sql - 如何仅在 Postgres 中备份函数

转载 作者:行者123 更新时间:2023-11-29 11:08:19 25 4
gpt4 key购买 nike

我想备份我的 postgres 数据库中的所有函数。如何只备份 Postgres 中的函数?

最佳答案

使用pg_getfunctiondef;见system information functions . pg_getfunctiondef 是在 PostgreSQL 8.4 中添加的。

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';

将上面的内容更改为 “除了那些以 pg_ 开头的模式之外的所有模式” 是微不足道的,如果这是您想要的。

psql 中,您可以将其转储到文件中:

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

要在另一个数据库中运行输出,请使用类似的东西:

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

但是,如果您像这样在 DB 之间复制函数,请考虑将函数定义的权威副本作为 SQL 脚本存储在版本控制系统(如 svn 或 git)中,最好打包为 PostgreSQL 扩展。参见 packaging extensions .

关于sql - 如何仅在 Postgres 中备份函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13758003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com