Ho creato una vista materializzata in Postgres 9.3 ma da allora ho perso la query SELECT sottostante che l'ha creata. Vorrei DROP la vista materializzata, riscrivere la query per includere più dati, quindi CREARE una vista materializzata con lo stesso nome ma con una nuova query sottostante.Come faccio a scoprire la query sottostante di una vista materializzata che ho creato?
5
A
risposta
11
Just:
SELECT pg_get_viewdef('myview');
da parte del cliente di vostra scelta.
ad es. in 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);
Questo funziona per le viste normali e materializzate.
In alternativa, come dice Richard, utilizzare's \d+
, che chiama il numero pg_get_viewdef
dietro le quinte.
0
SELECT * FROM "pg_catalog"."pg_matviews"
Ecco come si trova un elenco di tutte le viste materializzate che è stato creato. Non avevo mai usato o visto lo schema pg_catalog prima e Navicat, la GUI che usavo, nascondeva "elementi di sistema" che includevano pg_catalog. Puoi disattivare la disattivazione del turno nelle preferenze dell'app.
Oppure '\ d + viewname' da psql. Proprio '\ d nomeview' dà definizioni di colonne. –