我在Postgres 9.3中创建了一个物化视图但是我已经丢失了创建它的底层SELECT查询。我想DROP物化视图,重写查询以包含更多数据,然后创建具有相同名称但具有新基础查询的物化视图。
答案 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的“系统项”。您可以在应用的偏好设置中关闭隐藏状态。