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

ste*_*nce 8 postgresql materialized-views

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

Cra*_*ger 15

只是:

SELECT pg_get_viewdef('myview');
Run Code Online (Sandbox Code Playgroud)

来自您选择的客户.

例如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);
Run Code Online (Sandbox Code Playgroud)

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

或者,正如理查德所说,使用psql's \d+,它pg_get_viewdef在幕后调用.