2014-04-15 31 views

Odpowiedz

32

Pokaż wszystkie:

SELECT oid::regclass::text 
FROM pg_class 
WHERE relkind = 'm'; 

Nazwy są automatycznie uciekł i schemat zakwalifikowanych według aktualnej search_path razie potrzeby w obsadzie od regclass do text.

Materializowane widoki w katalogu systemowym pg_class są identyfikowane przez relkind = 'm'.
Per documentation:

m = materialized view 

Aby spadek wszystkim, można wygenerować potrzebne skrypt SQL z tego zapytania:

SELECT 'DROP MATERIALIZED VIEW ' || string_agg(oid::regclass::text, ', ') 
FROM pg_class 
WHERE relkind = 'm'; 

Powroty:

DROP MATERIALIZED VIEW mv1, some_schema_not_in_search_path.mv2, ... 

Jeden DROP MATERIALIZED VIEW oświadczenie może dbać o wiele zmaterializowanych widoków. Może być konieczne dodanie na końcu CASCADE, jeśli masz widoki zagnieżdżone.

Sprawdź wynikowy skrypt DDL, aby upewnić się przed jego wykonaniem. Czy jesteś pewien, że chcesz upuścić wszystkie MV z ze wszystkich schematów w db? (Obecnie nie istnieją zmaterializowane perspektywy w instalacji standardowej świeżego.)

+0

Prawdopodobnie literówka wyżej - moim PG, 3. wykaz powyżej powinien rozpocząć się: SELECT „DROP widok zmaterializowany” ... –

+0

@MichaelTerry: Tak, byłem wędrówki off temat poglądów. Dzięki, naprawione. –

+0

tak jak na marginesie, możesz użyć polecenia pg quick \ dm, aby wyświetlić listę swoich widoków z klienta cli. – lbrindze

0

Byłoby to łatwiejsze, jeśli chcesz uzyskać pełną listę ze stwierdzeniem spadku przed każdym zdaniem:

SELECT 'DROP MATERIALIZED VIEW ' || relname || ';' 
FROM pg_class 
WHERE relkind = 'm'; 
0

Ta odpowiedź opiera się na odpowiedzi z Erwin Brandstetter. Poniższa wersja dodaje określoną nazwę schematu, aby pobierać zmaterializowane widoki z określonego schematu. Cascasde również zmniejsza zależności od zmaterializowanych widoków z tego schematu. Ostrożnie z tym.

SELECT 'DROP MATERIALIZED VIEW <<schema_name>>.' || c.relname::text || ' CASCADE;' AS drop_statements 
FROM pg_class c 
INNER JOIN pg_namespace n ON n.oid = c.relnamespace 
AND c.relkind = 'm' 
AND n.nspname = '<<schema_name>>'