2014-09-09 7 views
5

Ich habe eine materialisierte Ansicht in Postgres 9.3 erstellt, aber ich habe seitdem die zugrunde liegende SELECT-Abfrage verloren, die es erstellt hat. Ich möchte die materialisierte Ansicht ablegen, die Abfrage neu schreiben, um mehr Daten aufzunehmen, und dann eine materialisierte Ansicht desselben Namens, aber mit einer neuen zugrundeliegenden Abfrage erstellen.Wie finde ich die zugrunde liegende Abfrage einer materialisierten Ansicht, die ich erstellt habe?

Antwort

11

Nur:

SELECT pg_get_viewdef('myview'); 

vom Client Ihrer Wahl.

z.B. 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); 

Dies funktioniert für normale und materialisierte Ansichten.

Alternativ, wie Richard sagt, verwenden Sie psql\d+, die pg_get_viewdef hinter den Kulissen ruft.

0
SELECT * FROM "pg_catalog"."pg_matviews" 

So finden Sie eine Liste aller materialisierten Ansichten, die Sie erstellt haben. Ich habe das pg_catalog-Schema vorher noch nie benutzt oder gesehen und Navicat, die GUI, die ich verwende, versteckte "Systemelemente", die pg_catalog enthielten. In den App-Einstellungen können Sie das Ausblenden der Abbiegung deaktivieren.

+2

Oder '\ d + viewname' von psql. Nur '\ d viewname' gibt Spalten-Definitionen. –

Verwandte Themen