如何在PostgreSQL中查看视图的CREATE VIEW代码?

时间:2013-01-31 20:13:58

标签: postgresql

是否可以通过PostgreSQL命令行客户端轻松查看用于创建视图的代码?

类似于MySQL的SHOW CREATE VIEW

6 个答案:

答案 0 :(得分:183)

保持不得不回到这里查找pg_get_viewdef(如何记住!!),所以寻找一个更难忘的命令......并得到它:

\d+ viewname

您可以通过在pgsql命令行输入\?来查看类似的命令。

额外提示:emacs命令sql-postgres使pgsql更加愉快(编辑,复制,粘贴,命令历史记录)。

答案 1 :(得分:88)

select pg_get_viewdef('viewname', true)

手册中提供了所有这些功能的列表:

http://www.postgresql.org/docs/current/static/functions-info.html

答案 2 :(得分:38)

select definition from pg_views where viewname = 'my_view'

答案 3 :(得分:11)

如果您需要ANSI SQL-92版本:

select view_definition from information_schema.views where table_name = 'view_name';

答案 4 :(得分:5)

从v.9.6及更高版本开始的GoodNews,视图编辑现在来自psql。只需使用此命令调用它,视图定义将显示在默认编辑器中。

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

答案 5 :(得分:1)

这是要指出的一点。
使用功能pg_get_viewdef或pg_views或information_schema.views ,您将始终获得原始DDL的重写版本
撤消的版本可能与原始DDL脚本相同。

如果规则管理器重写了视图定义,则原始DLL将丢失,并且您将只能读取视图定义的重写版本。
并非所有视图都会被重写,但是如果您使用子选择或联接,则可能会重写您的视图。