使用SQL查询在Postgresql中获取函数,序列,类型等的定义

我需要PostgreSQL数据库对象的创建脚本.

我无法访问pg_dump.所以我必须通过SQL查询获得所有内容.我怎么能这样做?

最佳答案
要获取函数的定义,请使用pg_get_functiondef():

select pg_get_functiondef(oid)
from pg_proc
where proname = 'foo';

有类似的函数来检索索引,视图,规则等的定义.有关详细信息,请参见手册:http://www.postgresql.org/docs/current/static/functions-info.html

获取用户类型的定义有点棘手.您需要查询information_schema.attributes:

select attribute_name, data_type
from information_schema.attributes
where udt_schema = 'public'
  and udt_name = 'footype'
order by ordinal_postion;

从那里你需要重新组装create type语句.

有关更多详细信息,您需要阅读系统目录的文档:http://www.postgresql.org/docs/current/static/catalogs.html

但是如果它们返回相同的信息,您应该更喜欢information_schema视图.

转载注明原文:使用SQL查询在Postgresql中获取函数,序列,类型等的定义 - 代码日志