我需要访问完整对象的源代码才能自动执行某些任务。例如:完整的视图源是视图本身,它的规则,触发器,特权......
通过使用不同的PostgreSQL工具,如PgAdmin,pg_dump,psql,可以很容易地获取它,但我需要能够通过(sql / plpgsql)函数调用来访问它。
实现如下所示的API并不困难:getFunctionSource,getTableSource,getFUnctionSource。但是,看起来这段代码需要在不同版本的数据库上进行大量维护。
是否有官方维护或经过良好测试扩展程序,API,pg_dump包装或我可以使用的任何内容?
答案 0 :(得分:1)
如果你运行psql -E
,你会看到Postgres运行的隐藏查询输出数据定义。
例如,可以通过运行\df foo
,阅读查询并随后尝试来找到函数的原始源:
select prosrc from pg_proc where proname = 'foo'
\sf foo
没有使用这种方法产生相关的功能,但粗略地查看docs on system information functions(其中有很多)应该表明它只是一个包装:
select pg_get_functiondef('foo'::regproc);
一些观点可以帮助您入门,如果您在github上发布您的内容的路线:
https://gist.github.com/ddebernardy/7893922
(在psql中使用\ i运行文件之前,你需要创建一个“系统”模式。)