Pages: 1
- Sujet précédent - Copie "table" d'une database d'un serveur à une autre database serveur - Sujet suivant
#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
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
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
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
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
Pages: 1
- Sujet précédent - Copie "table" d'une database d'un serveur à une autre database serveur - Sujet suivant