¿Es posible hacer una copia de seguridad y restaurar una vista materializada con sus datos?

10

Tengo algunas vistas materializadas difíciles de calcular, que quiero poder hacer una copia de seguridad y restaurar usando los datos almacenados reales, y no mediante la recalculación.

¿Es posible en PostgreSQL 9.4?

(la alternativa es crear tablas reales, pero son más difíciles de "actualizar")

Ophir Yoktan
fuente
3
Puede usar copypara crear un volcado de texto sin formato de los datos (o cualquier otra utilidad de exportación). Sin embargo, no estoy seguro de cómo restaurarlo.
a_horse_with_no_name
Puede "canalizar" el CSV desde COPY a / desde un servidor remoto usando psql -c "\ COPY ...." -h alguna base de datos IP, aunque obviamente, debe haber creado la estructura de la tabla en el lugar donde está restaurando.
John Powell el

Respuestas:

8

Realmente no. Debe recordar que el comando pg_dump crea sentencias CREATE TABLE e INSERT simples, etc. De manera efectiva, cuando ejecuta pg_restore, solo está ejecutando sentencias CREATE e INSERT en el servidor e insertando los datos requeriría un comando "INSERT INTO MATERIALIZED VIEW". Eso no tendría sentido, ya que obtener los datos mediante un acceso directo también pondría en peligro la "integridad" de la vista: puede insertar datos no válidos en el proceso de restauración manual que de lo contrario la vista no devolvería. Así que dudo que PostgreSQL alguna vez admita la restauración manual de datos de vistas materializadas directamente en la base de datos.

Si necesita hacer una copia de seguridad de los datos reales, recomendaría usar una tabla en lugar de una vista materializada y ejecutar una declaración DELETE FROM / INSERT INTO programada en la tabla.

Simo Kivistö
fuente