有没有一种简单的方法来查看用于使用PostgreSQL命令行客户端创建视图的代码?
类似于SHOW CREATE VIEW
MySQL中的。
有没有一种简单的方法来查看用于使用PostgreSQL命令行客户端创建视图的代码?
类似于SHOW CREATE VIEW
MySQL中的。
Answers:
不得不返回这里进行查找pg_get_viewdef
(如何记住它!),因此搜索了一个更令人难忘的命令……并得到:
\d+ viewname
您可以通过\?
在pgsql命令行中键入来查看类似的命令。
sql-postgres
温馨提示:emacs命令使pgsql更加令人愉悦(编辑,复制,粘贴,命令历史记录)。
\dv
列出所有视图
select pg_get_viewdef('viewname', true)
手册中提供了所有这些功能的列表:
http://www.postgresql.org/docs/current/static/functions-info.html
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
至少需要v9.4)。
select definition from pg_views where viewname = 'my_view'
select definition from pg_views where schemaname = 'my_schema' and viewname = 'my_view'
v.9.6及更高版本中的GoodNews,视图编辑现在来自psql。只需调用\ev
命令。视图定义将显示在您配置的编辑器中。
julian@assange=# \ev {your_view_names}
奖金。一些与查询缓冲区交互的有用命令。
Query Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\ev [VIEWNAME [LINE]] edit view definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\s [FILE] display history or save it to file
\w FILE write query buffer to file
这些是要指出的一点。
使用pg_get_viewdef或pg_views或information_schema.views函数,您将始终获得原始DDL 的重写版本。
撤消的版本可能与原始DDL脚本相同或不同。
如果规则管理器重写了视图定义,则原始DLL将丢失,并且您将只能读取视图定义的重写版本。
并非所有视图都会被重写,但是如果您使用子选择或联接,则可能会重写您的视图。