有没有一种简单的方法来查看用于使用 PostgreSQL 命令行客户端创建视图的代码?
类似于MySQL的SHOW CREATE VIEW
。
一直不得不回到这里查找pg_get_viewdef
(如何记住这一点!!并得到了它:
d+ viewname
您可以通过在 pgsql 命令行中键入 ?
来查看类似类型的命令。
额外提示:emacs 命令sql-postgres
使 pgsql 更加愉快(编辑、复制、粘贴、命令历史记录)。
select pg_get_viewdef('viewname', true)
手册中提供了所有这些功能的列表:
http://www.postgresql.org/docs/current/static/functions-info.html
select definition from pg_views where viewname = 'my_view'
如果你想要一个 ANSI SQL-92 版本:
select view_definition from information_schema.views where table_name = 'view_name';
来自 v9.6 及更高版本的好消息。视图编辑现在从 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
在 psql
cli 中,您可以使用
d+ <yourViewName>
sv <yourViewName>
输出如下:
d+ v_ma_students
View "public.v_ma_students"
Column | Type | Collation | Nullable | Default | Storage | De
scription
--------+-----------------------+-----------+----------+---------+----------+---
SOMETHINGS HERE
View definition:
SELECT student.sno,
student.sname,
student.ssex,
student.sage,
student.sdept
FROM student
WHERE student.sdept::text = 'MA'::text;
Options: check_option=cascaded
sv v_ma_students
CREATE OR REPLACE VIEW public.v_ma_students AS
SELECT student.sno,
student.sname,
student.ssex,
student.sage,
student.sdept
FROM student
WHERE student.sdept::text = 'MA'::text
WITH CASCADED CHECK OPTION
这是需要指出的小事。
使用函数pg_get_viewdef
或pg_views
或information_schema.views,您将始终获得原始DDL的重写版本。
重写的版本可能与原始 DDL 脚本相同,也可能不同。
如果规则管理器重写视图定义,则原始 DLL 将丢失,您将能够读取视图定义的唯一重写版本。
并非所有视图都会被重写,但如果您使用子选择或联接,您的视图可能会被重写。
在命令行客户端 psql 中,您可以使用以下命令:
sv <VIEWNAME>
查找"创建表..."的简单方法查询是使用此查询 -
SHOW TABLE your_schema_name.your_table_name