web-dev-qa-db-fra.com

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

Je suis nouveau sur postgresql, et localement, j'utilise pgadmin3. Sur le serveur distant, cependant, je n'ai pas ce luxe.

J'ai déjà créé et copié la sauvegarde de la base de données, mais existe-t-il un moyen de restaurer une sauvegarde à partir de la ligne de commande? Je ne vois que des choses liées à l'interface graphique ou à pg_dumps, donc si quelqu'un peut me dire comment s'y prendre, ce serait génial!

176
TwixxyKit

Il existe deux outils à examiner, selon la manière dont vous avez créé le fichier de vidage.

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 vidage lui-même. Ça dit:

Les vidages peuvent être générés en script ou en formats de fichiers d'archives. Les dumps de script sont Fichiers en texte brut contenant le code SQL commandes nécessaires pour reconstruire la base de données à l'état où il était au moment où il a été enregistré. À restaurer à partir d'un tel script, alimentez-le psql (1). Les fichiers de script peuvent être utilisés pour reconstruire la base même sur d'autres machines et autres des architectures; avec quelques modifications même sur d'autres produits de base de données SQL.

Les formats de fichiers d'archives alternatifs doit être utilisé avec pg_restore (1) à reconstruire la base de données. Elles permettent pg_restore être sélectif sur quoi est restauré, ou même de réorganiser le éléments avant d'être restauré. Le Les formats de fichiers d’archive sont conçus pour être portable à travers les architectures.

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

La restauration est assez facile:

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

ou

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

Consultez leurs pages de manuel respectives. Plusieurs options affectent le fonctionnement de la restauration. Vous devrez peut-être nettoyer vos bases de données "actives" ou les recréer à partir de template0 (comme indiqué dans un commentaire) avant de restaurer, en fonction de la manière dont les sauvegardes ont été générées.

223
Steven Schlansker

créer une sauvegarde

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

-F c est un format personnalisé (compressé, et capable de le faire en parallèle avec -j N) -b inclut des blobs, -v est détaillé, -f est le nom du fichier de sauvegarde

Restore depuis une sauvergarde

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

important de définir -h localhost - option

131
pilot

Vous devrez peut-être être connecté en tant que postgres pour disposer de tous les 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écifiez le format du fichier de sauvegarde:

  • c utilisera le format PostgreSQL personnalisé, qui est compressé et donne une taille de fichier de sauvegarde minimale.
  • d pour le répertoire où chaque fichier est une table
  • t pour l'archive TAR (plus grand que le format personnalisé)
  • -h/--Host Spécifie le nom d'hôte de la machine sur laquelle le serveur est en cours d'exécution.
  • -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 devrait créer la 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 commande (en tant qu'utilisateur postgres ou autre compte ayant le droit de créer des bases de données) createdb db_name -O owner

pg_dump/psql

Si vous n'avez pas spécifié l'argument -F, le texte SQL par défaut a été utilisé (ou avec -F p). Ensuite, vous ne pouvez pas utiliser pg_restore. Vous pouvez importer des données avec psql.

sauvegarde:

pg_dump -U username -f backup.sql database_name

restaurer: 

psql -d database_name -f backup.sql
58
Tombart

POSTGRESQL 9.1.12

DÉVERSER:

pg_dump -U user db_name > archive_name.sql

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

RESTAURER:

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

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

40
Natan Medeiros

Ci-dessous, 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 utilisez psql:

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

-h hôte, -p port, -u nom d'utilisateur de connexion, -d nom de la base de données

25
Yahor M

Sauvegarder et restaurer avec GZIP

Pour les bases de données de grande taille, c'est très bien

sauvegarde

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

résumer

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

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

9
Sarath Ak
Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
7
Aaron Lelevier

1.Ouvrez le terminal.

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

votre 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.backup

votre nom de base de données source - mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-password --format custom --blobs --file "/ home/dinesh/db /mydb.backup "" mydatabase "

3.restorez le fichier mydb.backup dans la destination.

votre serveur de destination - localhost

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

create database 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 --username "postgres" --domname "mydatabase" --no-password - nettoyage "/ home/dinesh/db/mydb. sauvegarde "

6
Dinesh-SriLanka

Comme indiqué ci-dessous, vous pouvez utiliser la commande psql pour restaurer le fichier de vidage:

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

psql dbname < infile

si vous devez définir un nom d'utilisateur, ajoutez-le après la commande, comme suit:

psql dbname < infile username
2
Maryam Saeidi

Essayez de voir si les commandes suivantes peuvent vous aider:

Sudo su - yourdbuser
psql
\i yourbackupfile
2
Mehmet Ali

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 Postgres. Par exemple: cd "C:\ProgramFiles\PostgreSQL\9.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 le mot de passe pour votre utilisateur postgres
  5. Vérifier le processus de restauration
2
Nick Taylor

Si vous avez un fichier de sauvegarde SQL, vous pouvez facilement le restaurer. Il suffit de suivre les instructions données ci-dessous

1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example:  cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql 

Tapez le mot de passe de votre utilisateur postgres si nécessaire et laissez Postgres faire son travail. Ensuite, vous pouvez vérifier le processus de restauration.

1
Omar Hasan

La restauration d’un fichier de sauvegarde Postgres dépend de la manière dont vous avez effectué la sauvegarde.

Si vous avez utilisé pg_dump avec -F c ou -F d, vous devez utiliser pg_restore, sinon vous pouvez simplement utiliser 

psql -h localhost -p 5432 -U postgres <fichier de sauvegarde

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

1
Prashant Kumar

1) Ouvrez le terminal psql.

2) Décompressez/décompressez le fichier de vidage.

3) Créez une base de données vide.

4) utilisez la commande suivante pour restaurer le fichier .dump

<database_name>-# \i <path_to_.dump_file>
1
Vaibhav Desai

Cela a fonctionné pour moi:

pg_restore --verbose --clean --no-acl --no-owner --Host = localhost -dbname = db_name --username = nom d'utilisateur latest.dump

1
Franz

essayer:

pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
1
Cristhian Gonzalez

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, accédez à votre répertoire postgres\bin\tel que C:\programfiles\postgres\10\bin\, puis tapez 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 à partir d'une sauvegarde, accédez à votre répertoire postgres\bin\tel que C:\programfiles\postgres\10\bin\, puis tapez la commande ci-dessous - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup

Veuillez vous assurer que le fichier de sauvegarde existe.

J'avais des problèmes d'authentification avec pg_dump, alors j'ai déplacé mon fichier de vidage

mv database_dump /tmp

dans le répertoire temporaire puis a couru

su -u postgres
cd /tmp
pg_restore database_dump

Si vous avez un dump de base de données volumineux, vous souhaiterez peut-être simplement créer un autre répertoire dans lequel votre utilisateur actuel et l'utilisateur postgres pourront accéder et y placer le fichier de dump de la base de données.

0
user1876508

essaye ça:

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

Restaurer la base de données psql à partir d'un fichier .sql

0
Faysal Maqsood