我想在触发器中进行修正,但是这个问题有200-300个例子 - 手动执行太多了。 Postgresql中是否有包含完整数据库代码的表,我可以在其中找到所有的定义并在同一时间更正它们?带Postgresql中函数定义的系统表
这可能是初学者的问题(我知道在Oracle中有这样的表,但我是Postgresql的新手),但我似乎无法在Web或我自己中找到它。
我想在触发器中进行修正,但是这个问题有200-300个例子 - 手动执行太多了。 Postgresql中是否有包含完整数据库代码的表,我可以在其中找到所有的定义并在同一时间更正它们?带Postgresql中函数定义的系统表
这可能是初学者的问题(我知道在Oracle中有这样的表,但我是Postgresql的新手),但我似乎无法在Web或我自己中找到它。
包含postgres中所有过程定义的表格是pg_catalog.pg_proc
。
源代码列为prosrc
。
你可以这样做:
select proname, prosrc from pg_proc where proname like '%doc%';
假设你有一个名为DOC某些功能。
存储过程pg_catalog.pg_get_functiondef
将返回特定函数的源代码。你可以这样做:
select pg_get_functiondef(oid) from pg_proc where proname='myfunction_name';
不幸的是,pg_get_functiondef
使用聚合函数内部 - 所以你不能在正在恢复不止一个函数的查询调用pg_get_functiondef
。
已经使用了pg_dump的解决方法,但pg_proc表正是我一直在寻找的东西,在另一种情况下它肯定会很有用。感谢帮助。 – Hisu 2014-12-03 16:57:21
最简单的方法是使用'pg_dump -U the_user --schema-only the_dbname >> textfile.sql',并使用文本文件的内容。文本文件将包含** all ** DDL,包括表,索引,视图,函数,但是这些很容易从文本文件中删除。 – wildplasser 2014-12-03 14:46:56
似乎有帮助。该文件在什么目录中显示?似乎无法用'find -name'textfile *'找到它,但是在linux上工作时我并不真正有效 – Hisu 2014-12-03 14:59:08
没有文件。输出发送到stdout。 (在我的例子中,我用'>> textfile'将它重定向到了一个文件)还有一个'--file = FILENAME'选项/ flag给pg_dump命令 – wildplasser 2014-12-03 15:02:10