如何发现我创建的物化视图的基础查询?

时间:2014-09-09 05:37:49

标签: postgresql materialized-views

我在Postgres 9.3中创建了一个物化视图但是我已经丢失了创建它的底层SELECT查询。我想DROP物化视图,重写查询以包含更多数据,然后创建具有相同名称但具有新基础查询的物化视图。

2 个答案:

答案 0 :(得分:15)

只需:

SELECT pg_get_viewdef('myview');

来自您选择的客户。

e.g。在psql

test=> CREATE MATERIALIZED VIEW fred AS SELECT x FROM generate_series(1,100) x;
SELECT 100
test=> \a\t
Output format is unaligned.
Showing only tuples.
test=> SELECT pg_get_viewdef('fred');
 SELECT x.x
   FROM generate_series(1, 100) x(x);

这适用于普通和物化视图。

或者,正如理查德所说,使用psql的{​​{1}},在幕后调用\d+

答案 1 :(得分:0)

SELECT * FROM "pg_catalog"."pg_matviews"

这就是你如何找到你创建的所有物化视图的列表。我以前从未使用或看过pg_catalog架构,而我使用的GUI Navicat隐藏了包含pg_catalog的“系统项”。您可以在应用的偏好设置中关闭隐藏状态。