【发布时间】:2014-11-02 10:38:34
【问题描述】:
我在 Postgres 9.3 中创建了一个物化视图,但后来我丢失了创建它的基础 SELECT 查询。我想删除物化视图,重写查询以包含更多数据,然后创建同名但具有新基础查询的物化视图。
【问题讨论】:
标签: postgresql materialized-views
我在 Postgres 9.3 中创建了一个物化视图,但后来我丢失了创建它的基础 SELECT 查询。我想删除物化视图,重写查询以包含更多数据,然后创建同名但具有新基础查询的物化视图。
【问题讨论】:
标签: postgresql materialized-views
SELECT * FROM "pg_catalog"."pg_matviews"
这就是您如何找到您创建的所有物化视图的列表。我以前从未使用或见过 pg_catalog 架构,而且我使用的 GUI Navicat 隐藏了包含 pg_catalog 的“系统项”。您可以在应用程序的首选项中关闭隐藏。
【讨论】:
\d+ viewname。只需 \d viewname 给出列定义。
只是:
SELECT pg_get_viewdef('myview');
来自您选择的客户。
例如在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);
这适用于普通视图和物化视图。
或者,正如 Richard 所说,使用 psql 的 \d+,它在幕后调用 pg_get_viewdef。
【讨论】: