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 l' -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 des pg_dump
paramètres. À quoi pg_restore
sert-il alors? formats de vidage en texte brut?
postgresql
postgresql-9.1
Marcus Junius Brutus
la source
la source
Réponses:
Si vous avez créé un vidage au format SQL, tout ce que vous pouvez utiliser est
psql
.Si vous avez créé un vidage au format personnalisé (
pg_dump -Fc
) ou au format répertoire (pg_dump -Fd
), vous pouvez et devez utiliserpg_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. De nombreuses options que vous devez spécifier à la
pg_dump
fois avec des vidages au format SQL peuvent être choisies lors de la restauration temps si vous utilisez un vidage format personnalisé etpg_restore
.S'il n'y avait pas de compatibilité descendante, je suis sûr que la valeur par défaut
pg_dump
serait le-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.
la source
pg_restore
sansdbname
argument le transformer en un vidage au format SQL si vous en avez besoin. Vous ne pouvez pas faire l'inverse.pg_restore
prend en charge la restauration parallèle, et si vous l'utilisez, ce sera BEAUCOUP plus rapidement.