web-dev-qa-db-fra.com

restauration de la base de données Postgres: pg_restore -vs- en utilisant simplement psql

Je vide ma base de données Postgres en utilisant pg_dump (au format texte brut) et je la restaure simplement en utilisant psql (avec le -f option).

Ce qui pose la question: est-ce que je manque quelque chose en n'utilisant pas pg_restore qui semble être un outil de restauration spécialisé (par rapport au générique psql)?

Je peux contrôler des options comme la désactivation des déclencheurs et autres en utilisant pg_dump paramètres. Qu'est-ce donc que pg_restore utilisé pour? formats de vidage en texte brut?

18

Si vous avez créé un vidage au format SQL, tout ce que vous pouvez utiliser est psql.

Si vous avez créé un format personnalisé (pg_dump -Fc) ou au format répertoire (pg_dump -Fd) dump, vous pouvez et devez utiliser pg_restore.

Les vidages de format personnalisé et de répertoire offrent de nombreux avantages par rapport aux vidages de script SQL simples, et je les utilise exclusivement. Vous pouvez sélectivement restaurer uniquement certaines tables/schémas, pouvez choisir d'inclure uniquement le schéma, uniquement les données, ou les deux au moment de la restauration, etc. Beaucoup d'options que vous devez spécifier à pg_dump L'heure avec les vidages au format SQL peut être choisie à temps de restauration si vous utilisez un vidage au format personnalisé et pg_restore.

S'il n'y avait pas de compatibilité descendante, je suis sûr que la valeur par défaut pour pg_dump serait -Fc format (personnalisé).

Vous ne pouvez pas convertir un vidage au format SQL au format personnalisé ou au format répertoire sans le restaurer dans une base de données PostgreSQL, puis vider la base de données restaurée.

19
Craig Ringer