Restaurer un fichier de sauvegarde postgres en utilisant la ligne de commande?

je suis nouveau à postgresql, et localement, j'utilise pgadmin3. Sur le serveur distant, cependant, je n'ai pas un tel luxe.

j'ai déjà créé la sauvegarde de la base de données et copiée sur, mais, est-il un moyen de restaurer une sauvegarde à partir de la ligne de commande? Je ne vois que des choses liées à GUI ou à pg_dumps, donc, si quelqu'un peut me dire comment faire, ce serait génial!

148
demandé sur Hardik Mishra 2010-04-28 23:18:10

15 réponses

il y a deux outils à regarder, selon la façon dont vous avez créé le fichier dump.

votre première source de référence devrait être la page de manuel pg_dump(1) car c'est ce qui crée le dump lui-même. Il dit:

Dumps peut être sortie en script ou formats des fichiers d'archives. Script dumps are fichiers texte contenant le code SQL commandes nécessaires pour reconstruire la base de données à l'état il était au moment où il a été enregistrer. De restaurer à partir d'un tel script, l'alimenter à psql (1). Les fichiers de Script peuvent être utilisés pour reconstruire la base de données même sur d'autres machines et d'autres architectures; avec quelques modifications même sur D'autres produits de base de données SQL.

L'alternative formats de fichiers d'archive doit être utilisé avec pg_restore(1) reconstruire la base de données. Ils permettent pg_restore doit être sélectif est restauré, ou même pour réorganiser les les articles avant de les restaurer. Le les formats de fichiers d'archives sont conçus pour être portable à travers les architectures.

dépend donc de la façon dont il a été jeté. Vous pouvez probablement le comprendre en utilisant l'excellente commande file(1) - s'il mentionne le texte ASCII et/ou SQL, il devrait être restauré avec psql sinon vous devriez probablement utiliser pg_restore

restaurer est assez facile:

psql -U <username> -d <dbname> -1 -f <filename>.sql

ou

pg_restore -U <username> -d <dbname> -1 <filename>.dump

vérifiez leurs pages de manuel respectives - il y a pas mal d'options qui affectent le fonctionnement de la restauration. Vous devrez peut-être nettoyer vos bases de données "live" ou les recréer à partir du template0 (comme indiqué dans un commentaire) avant de les restaurer, selon la façon dont les dumps ont été générés.

181
répondu Steven Schlansker 2016-08-25 16:17:08

créer une sauvegarde

pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f 
"/usr/local/backup/10.70.0.61.backup" old_db

restaurer depuis une sauvegarde

pg_restore -i -h localhost -p 5432 -U postgres -d old_db -v 
"/usr/local/backup/10.70.0.61.backup"

important pour définir - h localhost - option

114
répondu pilot 2012-05-28 08:55:25

Vous pourriez avoir besoin d'être connecté en tant que postgres afin d'avoir des privilèges sur les bases de données.

su - postgres
psql -l                      # will list all databases on Postgres cluster

pg_dump/pg_restore

  pg_dump -U username -f backup.dump database_name -Fc 

switch -F spécifier le format de fichier de sauvegarde:

  • c utilisera le format personnalisé PostgreSQL qui est comprimé et donne la plus petite taille de fichier de sauvegarde
  • d pour répertoire où chaque fichier est une table
  • t pour archive TAR (plus grand que format personnalisé)
  • -h / --host spécifie le nom d'hôte de la machine sur laquelle le serveur tourne
  • -W / --password forcer pg_dump à demander un mot de passe avant de se connecter à une base de données

restaurer la sauvegarde:

   pg_restore -d database_name -U username -C backup.dump

Le paramètre -C doit créer une base de données avant d'importer des données. Si cela ne fonctionne pas, vous pouvez toujours créer une base de données par exemple. avec la commande (comme utilisateur postgres ou autre compte qui a le droit de créer des bases de données) createdb db_name -O owner

pg_dump/psql

dans le cas où vous n'avez pas spécifié l'argument -F le format de SQL de texte simple par défaut a été utilisé (ou avec -F p ). Alors vous ne pouvez pas utiliser pg_restore . Vous pouvez importer des données avec psql .

de sauvegarde:

pg_dump -U username -f backup.sql database_name
"1519220920 de restauration":

psql -d database_name -f backup.sql
51
répondu Tombart 2018-09-20 07:42:43

POSTGRESQL 9.1.12

DUMP:

pg_dump -U user db_name > archive_name.sql

mettez le mot de passe de l'utilisateur et appuyez sur Entrée.

RESTORE:

psql -U user db_name < /directory/archive.sql

mettez le mot de passe de l'utilisateur et appuyez sur Entrée.

35
répondu Natan Medeiros 2017-05-01 06:07:42

ci-dessous est ma version de pg_dump que j'utilise pour restaurer la base de données:

pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup

ou utiliser psql :

psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup

-h armée, -p port", 151960920" login nom d'utilisateur, -d nom de la base de données

22
répondu Yahor M 2018-03-09 14:26:16

de Sauvegarde et de restauration avec GZIP

pour une base de données plus grande c'est très bon

sauvegarde

pg_dump -U user -d mydb | gzip > mydb.pgsql.gz

resore

gunzip -c mydb.pgsql.gz | psql dbname -U user

https://www.postgresql.org/docs/9.1/static/backup-dump.html

7
répondu Sarath Ak 2016-10-14 07:13:14
Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
6
répondu Aaron Lelevier 2014-07-30 16:15:27

1.ouvrez le terminal.

2.sauvegardez votre base de données avec la commande suivante

your postgres bin - / opt/PostgreSQL / 9.1/bin /

votre serveur de base de données source-192.168.1.111

l'emplacement et le nom de votre fichier de sauvegarde - /home/dinesh/db/mydb.de sauvegarde

votre base de données source nom - mabase

/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --port 5432 --nom d'utilisateur "postgres" --no-password --format custom --blobs --file "/home/dinesh/db / mydb.de sauvegarde" "mabase"

3.restaurer mydb.fichier de sauvegarde dans la destination.

votre serveur de destination-localhost

votre nom de base de données de destination-mydatabase

créer une base de données pour restaurer la sauvegarde.

/ opt / PostgreSQL / 9.1/bin/psql -h 'localhost' - p 5432-U postgres-c "CREATE DATABASE mydatabase "

restaurer la sauvegarde.

/opt/PostgreSQL/9.1/bin/pg_restore --host = 'localhost' --port 5432 --nom d'utilisateur "postgres" --dbname "mabase" --no-mot de passe --clean "/home/dinesh/db/mydb.de sauvegarde"

5
répondu Dinesh-SriLanka 2013-10-11 06:09:53

comme le dit le lien ci-dessous, vous pouvez utiliser la commande psql pour restaurer le fichier dump:

https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

psql dbname < infile

si vous avez besoin de définir l'utilisateur il suffit d'ajouter le nom d'utilisateur après la commande comme:

psql dbname < infile username
2
répondu Maryam Saeidi 2017-05-06 08:46:23

si vous créez une sauvegarde en utilisant pg_dump, vous pouvez facilement la restaurer de la manière suivante:

  1. Ouvrir la fenêtre de ligne de commande
  2. allez dans le dossier bin de Postgres. Par exemple: cd "C:\ProgramFiles\PostgreSQL.5\bin"
  3. Entrez la commande pour restaurer votre base de données. For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
  4. Tapez mot de passe pour votre utilisateur postgres
  5. Vérifier le processus de restauration
2
répondu Nick Taylor 2017-05-30 10:46:18

Essayer de voir si les commandes suivantes peuvent vous aider:

sudo su - yourdbuser
psql
\i yourbackupfile
2
répondu Mehmet Ali 2017-08-09 15:54:53

restaurer un fichier de sauvegarde postgres dépend de la façon dont vous avez pris la sauvegarde en premier lieu.

si vous avez utilisé pg_dump avec-F C ou-F d vous devez utiliser pg_restore sinon vous pouvez juste utiliser

psql-h localhost-p 5432-U postgres < backupfile

9 façons de sauvegarder et de restaurer les bases de données postgres

1
répondu Prashant Kumar 2014-10-14 17:22:29

j'avais des problèmes d'authentification avec pg_dump, donc j'ai déplacé mon fichier dump

mv database_dump /tmp

dans le répertoire temp et a ensuite couru

su -u postgres
cd /tmp
pg_restore database_dump

si vous avez un gros dump de base de données, vous pouvez juste vouloir créer un autre répertoire où votre Utilisateur courant et l'utilisateur postgres peuvent accéder et mettre le fichier dump de base de données dans ce.

0
répondu user1876508 2017-07-19 03:04:47

si vous souhaitez sauvegarder vos données ou restaurer des données à partir d'une sauvegarde, vous pouvez exécuter les commandes suivantes:

1 pour créer une sauvegarde de vos données, allez dans votre répertoire postgres \bin \ comme C:\programfiles\postgres\bin\ et tapez ensuite la commande suivante - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup

2 pour restaurer les données d'une sauvegarde, allez dans votre répertoire postgres \bin comme C:\programfiles\postgres\bin\ et tapez ensuite la commande - C:\programFiles\postgres\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup

s'il vous Plaît assurez-vous que le sauvegarde le fichier existe.

0
répondu Girjesh Kumar Suryawanshi 2018-09-17 10:46:30

voir ci-dessous exemple son fonctionnement

C:/Program Files/PostgreSQL/9.4 / bin\pg_restore.exe -- host localhost --port 5432 --nom d'utilisateur "postgres" -- dbname "newDatabase" --no-password --verbose

C:\Users\Yogesh\Downloads\new Download\DB.de sauvegarde "

-3
répondu user3881346 2015-05-23 06:35:27