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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 26 June 2012 16:47

ldp
Participant occasionnel
Date d'inscription: 26 Jun 2012
Messages: 10

Copie "table" d'une database d'un serveur à une autre database serveur

Bonjour,

je cherche de l'aide, je travaille avec postgres/postgis pour la gestion de mes bases de données avec l'interface pgadmin. J'aimerais copier une table1 qui se trouve dans une database1 sur un serveur1 vers une database(DB2) sur un serveur2.
J'ai essayé un backup et restore avec pgadmin. Le backup fonctionne (j'ai fait un .tar car je n'avais pas beaucoup d'autres options dans ma liste déroulante!) mais le restore n'a pas du tout fonctionné. Je ne sais pas s'il faut ou non créer au préalable une nouvelle table2 pour acceuillir les données sauvegardées par le backup afin de faire le restore après. J'ai essayé les 2 mais rien n'a fonctionné!
Puis j'ai essayé avec une query sql : type
SELECT *  INTO DestinationServer2.destinationDB2.Destinationschema.DestinationTable2 FROM SourceTable1 AS SourceTable1_1
mais j'ai une réponse "improper qualified name (too many dotted names)".

J'espère avoir été clair??!!
Quelqu'un serait-il m'aider? je n'ai pas un grand niveau dans ce domaine, alors toute aide sera la bienvenue....
Merci d'avance

ld

Hors ligne

 

#2 Tue 26 June 2012 17:26

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Bonjour,

Sous pgAdmin, pour sauver :
1. Clic droit sur la table que tu veux sauver, choisir "Sauvegarder"
2. dans la fenêtre, choisir le fichier et le format : "fichier plat"
3. cliquer sur sauvegarder

Restaurer :
0. se placer dans la base cible
1. ouvrir le fichier précédement créé avec pgAdmin
2. lancer le script

Si la table n'est pas trop volumineuse ca devrait passer sans problème.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Tue 26 June 2012 17:50

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

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Bonsoir,

Je sais que vous precisez que vous travaillez avec pgAdmin, mais si les deux serveurs se voient par le réseau, je vous conseille la ligne de commande psql en association avec pgDump pour faire ca.
C'est tres puissant !, exemple:

depuis le serveur 1, en ligne de commande:

Code:

pgdump -t table1 database1 | psql -h serveur2 -d database2

Et hop, les données sont transférées depuis le serveur 1 vers le serveur 2, en une seule operation.
Il faudra surement affiner les options (port, user, etc...).

N'hesitez pas a revenir vers cette liste en cas de soucis.

Nicolas

Hors ligne

 

#4 Tue 26 June 2012 17:59

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

Re: Copie "table" d'une database d'un serveur à une autre database serveur

ldp a écrit:

Bonjour,

je cherche de l'aide, je travaille avec postgres/postgis pour la gestion de mes bases de données avec l'interface pgadmin. J'aimerais copier une table1 qui se trouve dans une database1 sur un serveur1 vers une database(DB2) sur un serveur2.
J'ai essayé un backup et restore avec pgadmin. Le backup fonctionne (j'ai fait un .tar car je n'avais pas beaucoup d'autres options dans ma liste déroulante!) mais le restore n'a pas du tout fonctionné. Je ne sais pas s'il faut ou non créer au préalable une nouvelle table2 pour acceuillir les données sauvegardées par le backup afin de faire le restore après. J'ai essayé les 2 mais rien n'a fonctionné!
Puis j'ai essayé avec une query sql : type
SELECT *  INTO DestinationServer2.destinationDB2.Destinationschema.DestinationTable2 FROM SourceTable1 AS SourceTable1_1
mais j'ai une réponse "improper qualified name (too many dotted names)".


Sinon pardon, pour repondre a votre question, la requete que vous indiquez fait appel, sauf erreur de ma part, a un module de postgresql permettant de faire des requetes en référencant plusieurs BD présentes sur plusieurs serveurs: DBLink.
Etes-vous sur que dblink est bien installé sur vos serveurs ?

Concernant les operations dump/restore, normalement la table a restaurer est recréée.
Si le dump fabrique un .tar, (format compressé), il y a de fortes chances pour que le contenu de cette archive soit un script SQL directement executable dans PgAdmin (et non le format custom attendu par l'outil pg_restore): decompressez ce tar et regardez si le fichier contenu est du SQL. Si c'est le cas, chargez ce SQL dans l'editeur de requetes pgAdmin.

Nicolas

J'espère avoir été clair??!!
Quelqu'un serait-il m'aider? je n'ai pas un grand niveau dans ce domaine, alors toute aide sera la bienvenue....
Merci d'avance

ld

Hors ligne

 

#5 Wed 04 July 2012 08:47

ldp
Participant occasionnel
Date d'inscription: 26 Jun 2012
Messages: 10

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Bonjour,

voici mes essais ....
------------
Pour le backup de la table, les formats proposés sont "plain, tar, custom et directory", pour le restore je n'ai plus que les formats suivants "tar or custom" et "directory". Donc pas moyen de faire un restore avec le format plain, mais ça ne fonctionne pas non plus avec tar et custom. Avec custom, cela fait le backup mais ne fait rien pour le restore. Et j'obtiens le message suivant :
C:\Program Files\pgAdmin III\1.14\pg_restore.exe --host xxxxxxx --port xxxx --username "xxxxxx" --dbname "demo" --role "postgres" --no-password  --schema eau --verbose "C:\Users\ldp\espace_travail_Laetitia\temp\test2.backup"
pg_restore: connecting to database for restore
pg_restore: implied data-only restore

Process returned exit code 0.

mais à part ça, je ne vois pas ma table qui aurait dû être restaurée
------------------------------
Sinon j'ai essayé l'export .csv mais avec cette table, je ne sais pas pourquoi quand je l'ouvre dans excel, j'ai des balises html!! du coup, le formatage de la table exportée n'est pas propre du tout pour être importé sur l'autre serveur!
------------------------------
Via la console psql je fais :
à partir de la basa Data
Data=# pgdump -t batex_web_export3  psql -h server2 -p xxxx -U postgres -d demo -n eau
j'ai également fait :
Data=# pgdump -t batex_web_export3 public psql -h server2 -p xxxx -U postgres -d demo -n eau demo

mais ça ne fait rien
Question faut-il mettre "|" avant psql? Data=# pgdump -t batex_web_export3 public | psql -h server2 -p xxxx -U postgres -d demo -n eau demo?
si oui, quelle est la touche correspondante?
Je suis vraiment débutante, alors je suis vraiment désolée d'avance si mes questions semblent un peu bêtes!


Merci

ldp

Hors ligne

 

#6 Wed 04 July 2012 09:12

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Bonjour,

Le format Plain signifie en "texte" donc il faut l'ouvrir directement avec la fenêtre SQL de pgAdmin.

Data=# signifie que tu est dans une console SQL, la base de données s'appelle Data et tu lances une commandes shell, ca ne va jamais fonctionner. Au pire ta console attend que tu entres un ";" à la fin pour lancer la commande.

Et oui il faut mettre le symbol pipe (| -> Alt GR + 6) entre la fin de pgdump et psql.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#7 Wed 04 July 2012 10:34

ldp
Participant occasionnel
Date d'inscription: 26 Jun 2012
Messages: 10

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Rebonjour,

malheureusement, le | -> Alt GR + 6, n'est pas valable chez moi, car j'ai un clavier azerty mais belge, et du coup ce pipe n'apparait nul part sur aucune touche. Du coup, je n'ai aucune idée comment taper ce symbol. Quelqu'un aurait une idée?

Merci

Ldp

Hors ligne

 

#8 Wed 04 July 2012 11:28

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

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Deux options:

1°) regarder la table de caractères Windows (proprietes du clavier, dans le menu de configuration windows): vous pourrez alors:
   • regarder ou se situe cette touche sur le clavier (elle y est forcement, il se peut par contre qu'elle ne soit pas physiquement dessinée)
   • copier directement le caractere pour le coller dans la fenetre cmd

2°) Appuyer sur la touche ALT et en meme temps, taper le numero 124 sur le pavé numérique (ALT+124, il faut le verrouillage numérique activé): c'est le code du caractere | (plus d'infos ici: http://usefulshortcuts.com/downloads/ALT-Codes.pdf)

Nicolas

Hors ligne

 

#9 Wed 04 July 2012 11:31

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

Re: Copie "table" d'une database d'un serveur à une autre database serveur

(touches CTRL+ALT+1, ou ALTGR+1, sur un clavier Francais Belge, layout Belge)

Pour visualiser les touches de votre clavier, sinon (sous XP, je ne sais pas sous les autres OS):

Menu demarrer -> Tous les programmes -> accessoires -> accessibilité -> clavier visuel.

puis, une fois ce clavier visuel ouvert, si vous cliquez sur la touche ALT de droite (qui correspond a ALTGR sur le clavier physique), vous allez voir apparaitre tous les caracteres accessibles a travers cette combinaison de touches.

Nico

Hors ligne

 

#10 Wed 04 July 2012 12:23

ldp
Participant occasionnel
Date d'inscription: 26 Jun 2012
Messages: 10

Re: Copie "table" d'une database d'un serveur à une autre database serveur

J'ai trouve le symbol ... mais en lançant  :
Data=# pgdump -t table | psql -h server2 -p xxxx -U xxxx -d database2 -n table;

j'obtiens la réponse :
ERROR: syntax error at or near "pgdump"
LINE 1: .......

Je ne connais pas assez pour savoir à quoi est dû l'erreur ... une idée?

Ldp

Hors ligne

 

#11 Wed 04 July 2012 13:27

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Copie "table" d'une database d'un serveur à une autre database serveur

Bonjour,

Tu lances une commande shell dans une console SQL. Pour utiliser pg_dump il faut être dans une console DOS (sous Windows) : menu Démarrer > éxécuter > entrer "cmd" puis presse "Enter".

Après il faut se déplacer dans le répertoire où se trouve la commande pg_dump.exe :

Code:

cd c:/Program File/Postgresql/bin/
pgdump.exe -t table | psql -h server2 -p xxxx -U xxxx -d database2 -n table

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

Pied de page des forums

Powered by FluxBB