Saltar al contenido

¿Hay un comando de postgres para listar/soltar todas las vistas materializadas?

Siéntete en la libertad de compartir nuestra página y códigos en tus redes, necesitamos tu ayuda para aumentar esta comunidad.

Solución:

Mostrar todo:

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

Los nombres se entrecomillan automáticamente y se califican según el esquema donde sea necesario de acuerdo con su actual search_path en el elenco de regclass a text.

En el catálogo del sistema pg_class las vistas materializadas están etiquetadas con relkind = 'm'.
El manual:

m = materialized view

A soltar todo, puede generar el script SQL necesario con esta consulta:

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

Devoluciones:

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

Una DROP MATERIALIZED VIEW declaración puede hacerse cargo de múltiples puntos de vista materializados. Es posible que deba agregar CASCADE al final si tiene vistas anidadas.

Inspeccione el script DDL resultante para asegurarse antes de ejecutarlo. ¿Estás seguro de que quieres dejar todo ¿MV de todos los esquemas en la base de datos? ¿Y tiene los privilegios necesarios para hacerlo? (Actualmente no hay vistas materializadas en una nueva instalación estándar).


Mientras usa el terminal interactivo estándar psqlpuede usar el meta-comando:

dm

Ejecuta esta consulta en el servidor:

SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('m','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

Que se puede reducir a:

SELECT n.nspname as "Schema"
     , c.relname as "Name"
     , pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM   pg_catalog.pg_class c
LEFT   JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relkind = 'm'
AND    n.nspname <> 'pg_catalog'
AND    n.nspname <> 'information_schema'
AND    n.nspname !~ '^pg_toast'
AND    pg_catalog.pg_table_is_visible(c.oid)
ORDER  BY 1,2;

Sección de Reseñas y Valoraciones

Recuerda que puedes comunicar esta reseña si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *