É possível fazer backup e restaurar uma visão materializada com seus dados?

10

Tenho algumas visualizações materializadas difíceis de calcular, que quero poder fazer backup e restaurar usando os dados armazenados reais, e não recalculando.

É possível no PostgreSQL 9.4?

(a alternativa é criar tabelas reais, mas elas são mais difíceis de "atualizar")

Ophir Yoktan
fonte
3
Você pode usar copypara criar um dump de texto sem formatação dos dados (ou qualquer outro utilitário de exportação). Não tenho certeza de como restaurá-lo.
A_horse_with_no_name 18/02
Você pode "canalizar" o CSV de COPY para / de um servidor remoto usando o banco de dados psql -c "\ COPY ...." -h some_IP, embora obviamente você precise criar a estrutura da tabela no local para o qual está restaurando.
John Powell

Respostas:

8

Na verdade não. Você deve se lembrar que o comando pg_dump cria instruções CREATE TABLE e INSERT simples, etc. Assim, efetivamente, ao executar o pg_restore, você está executando as instruções CREATE e INSERT no servidor e inserindo os dados requerendo um comando "INSERT INTO MATERIALIZED VIEW". Isso não faria sentido, pois obter os dados por um atalho também colocaria em risco a "integridade" da exibição - você poderia inserir dados inválidos no processo de restauração manual que a exibição não retornaria de outra forma. Portanto, duvido que o PostgreSQL possa suportar a restauração manual de dados de visualizações materializadas diretamente no banco de dados.

Se você precisar fazer backup dos dados reais, eu recomendaria o uso de uma tabela em vez da visualização materializada e a execução de instruções DELETE FROM / INSERT INTO agendadas na tabela.

Simo Kivistö
fonte