Est-il possible de sauvegarder et de restaurer une vue matérialisée avec ses données?

10

J'ai des vues matérialisées difficiles à calculer, que je veux pouvoir sauvegarder et restaurer en utilisant les données stockées réelles, et non en recalculant.

Est-ce possible dans PostgreSQL 9.4?

(l'alternative est de créer des tables réelles, mais elles sont plus difficiles à "rafraîchir")

Ophir Yoktan
la source
3
Vous pouvez utiliser copypour créer un vidage en texte brut des données (ou tout autre utilitaire d'exportation). Je ne sais pas comment le restaurer.
a_horse_with_no_name
Vous pouvez "diriger" le CSV de COPY vers / depuis un serveur distant en utilisant psql -c "\ COPY ...." -h une base de données some_IP, bien que vous deviez évidemment avoir créé la structure de la table à l'endroit où vous restaurez.
John Powell du

Réponses:

8

Pas vraiment. Vous devez vous rappeler que la commande pg_dump crée des instructions CREATE TABLE et INSERT simples, etc. Ainsi, lorsque vous exécutez pg_restore, vous exécutez simplement des instructions CREATE et INSERT sur le serveur et l'insertion des données nécessite une commande "INSERT INTO MATERIALIZED VIEW". Cela n'aurait aucun sens, car obtenir les données par un raccourci mettrait également en danger «l'intégrité» de la vue - vous pourriez insérer des données non valides dans le processus de restauration manuelle que la vue ne retournerait pas autrement. Je doute donc que PostgreSQL supporte jamais la restauration manuelle des données des vues matérialisées directement dans la base de données.

Si vous devez sauvegarder les données réelles, je recommanderais d'utiliser une table au lieu d'une vue matérialisée et d'exécuter des instructions DELETE FROM / INSERT INTO planifiées dans la table.

Simo Kivistö
la source