PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 16/08/2012 19:07:40

yelem
Membre

Ou taper les commandes psql ?

Bonjour,

Je sais que la question peut paraître complètement bête mais je n'arrive pas à trouver où est-ce qu'il faut taper les commandes psql pour importer une base de données par exemple.
Avant sous postgres 8.2 je les tapais dans "Invite de commande" mais avec la version 9.1 je ne sais pas ou les taper. L'outil psql(shell) me connecte directement aux bases de données.

Comment faire s'il vous plais ?

Merci

Hors ligne

#2 16/08/2012 19:17:43

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Bonjour,


je ne comprend pas très bien votre question. Si vous voulez effectuer des requêtes, il faut être connecté à psql. Pour les sauvegardes/restauration, il faut utiliser les outils fournis (pg_dump,pg_dumpall,pg_restore).

Si vous voulez utiliser un script avec psql, vous pouvez faire psql -c "commandes" ou psql -f fichier.sql

En ligne

#3 16/08/2012 19:23:31

yelem
Membre

Re : Ou taper les commandes psql ?

En fait je ne veux pas taper des requête SQL mais pouvoir taper des commandes du type psql base < dump.sql
Où se trouvent les outils pg_dump, pg_dumpall, pg_restore ??

Hors ligne

#4 16/08/2012 21:09:46

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Je suppose que vous êtes sous windows. Tous les binaire de postgresql (psql,pg_dump ...) se trouvent dans le répertoire d'installation, sous répertoire bin.

Par défaut, cela devrait être c:\Program Files\Postgres\9.1\bin\*.exe


Il vous faut rajouter le chemin vers les binaires dans le path pour pouvoir appeler ces binaires en ligne de commande sans spécifier le chemin absolu.

En ligne

#5 16/08/2012 22:38:06

yelem
Membre

Re : Ou taper les commandes psql ?

Ca y est, je viens de réussir à taper la commande, seulement maintenant il me renvoie l'erreur suivante :
pg_restore archiver unsupported version (1.12) in file header

Je pense qu'il s'agit d'un problème de compatibilité entre la version d'où est issu le dump (8.2) et la version dans laquelle je souhaite l'importer (9.1).
Que faut-il que je fasse pour pouvoir importer ma base ?

Hors ligne

#6 17/08/2012 09:08:24

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Pour faire une migration d'une version majeure à une autre, il faut toujours faire le dump avec l'exécutable de la nouvelle version. Il faudrait donc utiliser pg_dump de la version 9.1 pour sauvegarder vos instances. Pensez également à sauvegarder les objets globaux (roles, tablespaces ...). Pour cela, vous pouvez faire un pg_dumpall -g pour ne sauvegarder que les objets globaux, ce qui créera un fichier au format sql. Vous pourrez ensuite restaurer la ou les bases de données issues de pg_dump. Vous pouvez aussi utiliser pg_dumpall pour sauvegarder les globaux ainsi que toutes les bases.

En ligne

#7 17/08/2012 12:37:46

yelem
Membre

Re : Ou taper les commandes psql ?

Le problème ici est que la base de données que je veux importer se trouve au départ sur un serveur sur lequel je ne peux pas installer quoique ce soit, donc pas la nouvelle version de PostgreSQL. La version 8.2 y est actuellement installée et je ne peux donc pas faire un pg_dumpall avec la 9.1... Il n'y a pas un moyen pour que je puisse faire cette restauration sans avoir à passer par des outils d'une version supérieur ??

Hors ligne

#8 17/08/2012 13:03:11

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Si vous avez un accès internet au serveur, vous pouvez le sauvegarder à distance:

c:\program files\postgres\9.1\bin\pg_dump.exe -h ip.serveur -p 5432 labase > c:\labase.dump

Si cela n'est pas possible, vous pouvez essayer avec un dump en format sql et non en format custom.

Si cela ne marche pas, il ne vous reste qu'à restaurer cette sauvegarde sur un serveur en version 8.2 en local pour la resauvegarder avec un pg_dump en 9.1.

En ligne

#9 17/08/2012 13:06:13

yelem
Membre

Re : Ou taper les commandes psql ?

Oui mais encore faut-il pouvoir trouver la version 8.2 quelque part ...
Sur ma machine perso (sur laquelle je pourrais donc l'installer), je suis sous Ubuntu et je ne trouve pas le paquet pour postgres 8.2...

Hors ligne

#10 17/08/2012 13:51:50

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Vous pouvez télécharger le code source (http://ftp.postgresql.org/pub/source/v8 … .23.tar.gz), le compiler et l'utiliser. Ce n'est pas très long. Pour choisir le répertoire d'installation des binaires, faîtes ./configure --prefix /chemin/vers/binaire

En ligne

#11 17/08/2012 14:45:47

yelem
Membre

Re : Ou taper les commandes psql ?

Je viens de lancer tout ça mais j'ai l'erreur suivante qui s'affiche :
configure: error: readline library not found
If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory.
Use --whithout-readline to disable readline support.

Hors ligne

#12 17/08/2012 14:48:43

yelem
Membre

Re : Ou taper les commandes psql ?

J'ai rajouter l'option --whithout-readline et ça a l'air d'avoir fonctionner. En tout cas je n'ai pas eu d'erreur. Par contre, faut-il que je désinstalle la version 9.1 que j'avais installer sur cette machine ?

Hors ligne

#13 17/08/2012 15:33:18

rjuju
Administrateur

Re : Ou taper les commandes psql ?

Non, il suffit de choisir un répertoire spécifique pour cette base, de lancer initdb -D /repertoire/data/8.2 en tant que postgres,
puis d'éditer le postgresql.conf créé pour y mettre un port autre que celui utilisé par votre 9.1 (5432 par défaut), et faire pg_ctl -D /repertoire/data/8.2 start

En ligne

Pied de page des forums