Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 23 May 2014 13:29

Thomas Williamson
Participant actif
Lieu: Poitiers
Date d'inscription: 16 Nov 2008
Messages: 92

[pg_dump] Sauvegarde d'une table

Bonjour,

Je cherche à créer un fichier BATCH pour sauvegarder de temps à autre une table afin de tester des modifications dessus, et pouvoir la restaurer si besoin. Je galère avec les lignes de commande mais je pense approcher du but. Quelqu'un peut-il me donner son avis sur le script suivant :

Code:

"C:\Program Files\PostgreSQL\9.2\bin\pg_dump.exe" --host localhost --port 5432 --username postgres --format plain --ignore-version --verbose --file "C:\Users\UserName\Desktop\filename.backup" --table schema.table db_thomas

Bien sûr, je remplace UserName par le nom de mon répertoire et schema / table correspondent à un schéma et une table qui existent. J'exécute le fichier *.bat et la fenêtre Cmd me demande un mot de passe. Je ne peux pas taper de texte dans cette fenêtre donc je ne peux pas renseigner mon mot de passe... J'ai essayé de passer l'option --password dans ma ligne de commandes mais pg_dump me renvoie un message d'erreur "Trop d'arguments en ligne de commande".

J'ai aussi simplifié la ligne en comme ci-dessous et je réalise que le mot de passe est demandé dès cette étape (cf. pièce jointe)...

Code:

"C:\Program Files\PostgreSQL\9.2\bin\pg_dump.exe"

Je tourne un peu en rond... Merci pour votre aide !

Thomas


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 23 May 2014 13:58

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [pg_dump] Sauvegarde d'une table

Bonjour,

Vous pouvez faire cela facilement avec PgAdmin (bouton droit, sauvegarder la table)
S'il s'agit de conserver temporairement une table pour faire des tests, vous pouvez aussi facilement en faire un copie directement dans la base:

Code:

create table table_secours as select * from table_travail;

En mode batch, vous pouvez stocker le mot de passe dans un fichier .pgpass: il sera utilisé lors de l'appel de pg_dump (http://www.postgresql.org/docs/9.3/stat … gpass.html)

Nicolas

Hors ligne

 

#3 Fri 23 May 2014 14:06

Thomas Williamson
Participant actif
Lieu: Poitiers
Date d'inscription: 16 Nov 2008
Messages: 92

Re: [pg_dump] Sauvegarde d'une table

Merci Nicolas ! J'ai trouvé la doc entre temps pour le fichier pgpass, mais comment le passer dans la ligne de commandes ? J'imaerais bien aller jusqu'au bout réussier à utiliser un peu le backup avec pg_dump. Etant donné que dans le pgpass.conf précise l'hôte, le port, etc. ces options sont à retirer de la ligne de commande, non ? Ma ligne de commande qui a évolué un peu :

Code:

cd "C:\Program Files (x86)\pgAdmin III\1.18"
pause

pg_dump.exe C:\Users\t_williamson\AppData\postgresql\pgpass.conf -C -f C:\Users\t_williamson\Desktop\text_export.sql -t schema1.lakes thomas

Dommage que la doc en ligne ne donne pas plus de précisions sur comment faire référence à ce fichier...

EDIT : en pièce jointe, le message que j'obtiens.

Merci encore !

Thomas

Dernière modification par Thomas Williamson (Fri 23 May 2014 14:11)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Fri 23 May 2014 14:21

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [pg_dump] Sauvegarde d'une table

La doc concernant l'utilisation de pgpass.conf est dans la partie pgpass de la doc (http://www.postgresql.org/docs/9.3/stat … gpass.html) et pas la partie pg_dump: tous les programmes qui utilisent libpq (la librairie client de PG) se basent sur le meme mécanisme pour lire ce fichier:

Sous windows, il faut placer ce fichier dans %APPDATA%\postgresql\pgpass.conf.
Il sera alors automatiquement lu par pg_dump.

la ligne de commande serait alors:

Code:

pg_dump.exe -C -f C:\Users\t_williamson\Desktop\text_export.sql -t schema1.lakes thomas

(attention: le fichier de dump contiendra la commande pour recréer la BD "thomas". Vous aurez plus de mal a restaurer uniquement cette table dans votre base de données en faisant cela: il faudra supprimer et recréer toute la base)

Nicolas

Hors ligne

 

#5 Fri 23 May 2014 14:28

Thomas Williamson
Participant actif
Lieu: Poitiers
Date d'inscription: 16 Nov 2008
Messages: 92

Re: [pg_dump] Sauvegarde d'une table

Ca ne marche toujours pas...

J'ai repassé la ligne de commande ci-dessous et le mot de passe est demandé en bout de course (cf. pièce jointe)... Pourtant j'ai bien créé le fichier pgpass.conf ici : C:\Users\t_williamson\AppData\postgresql\ avec comme contenu cette unique ligne : localhost:5432:thomas:postgres:postgres. Il semble que pg_dump ne lise pas le fichier... Pour info, j'ai dû créer le répertoire postgresql dans AppData, qui n'existait pas.

Code:

pg_dump.exe -h localhost -p 5432 -U postgres -f C:\Users\t_williamson\Desktop\test_export.sql -t schema1.lakes thomas

Une idée de l'origine du problème ?

Merci !


Thomas


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Fri 23 May 2014 14:43

Thomas Williamson
Participant actif
Lieu: Poitiers
Date d'inscription: 16 Nov 2008
Messages: 92

Re: [pg_dump] Sauvegarde d'une table

En définissant la variable PGPASSWORD dans les variables d'environnement, ça marche bien ! Bizarre que le fichier pgpass.conf ne soit pas détecté. Si quelqu'un à une explication, je suis preneur !

Thomas

Hors ligne

 

#7 Fri 23 May 2014 15:50

Thomas Williamson
Participant actif
Lieu: Poitiers
Date d'inscription: 16 Nov 2008
Messages: 92

Re: [pg_dump] Sauvegarde d'une table

Après creusage du sujet, voici mes scripts fonctionnels :

1. Dump d'une table :

Code:

"C:\Program Files\PostgreSQL\9.2\bin\pg_dump.exe" -h localhost -p 5432 -U postgres -v -f D:\test.sql -t schema.table database

2. Restauration de la table :

Code:

"C:\Program Files\PostgreSQL\9.2\bin\psql.exe" -h localhost -p 5432 -U postgres -d database -f D:\test.sql

J'ai solutionné le problème du password en configurant une nouvelle variable d'environnement PGPASSWORD (Panneau de configuration > Système > Paramètres système avancés > Variables d'environnement > Nouvelle).

Merci pour votre aide !

Thomas

Dernière modification par Thomas Williamson (Fri 23 May 2014 15:51)

Hors ligne

 

Pied de page des forums

Powered by FluxBB