Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2007, 18h48   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
Par défaut problème import export

Bonjour,

J'ai un petit soucis d'import export avec mes bases postgres.
j'ai un serveur sous redhat avec postgres 7.2 ou 7.3 je sais plus
ensuite j'ai un PC sous XP avec postgres 8.1

je voudrais faire un export complet de la base sous postgres 7.2 pour l'importer dans postgres 8.1...

j'ai donc fait : pg_dump -i -h localhost -p 5555 -U postgres -F c -b -v-c f /tmp/Mabase.backup Mabase

ensuite je vais sur le PC avec XP
je fais un createdb -U postgres Mabase et ensuite un pg_restore -i -h localhost -p 5555 -U postgres -F c Mabase.backup Mabase

et là j'ai trois tonnes de messages d'erreurs qui défilent, à la fin toute la structure de la base est bien créé mais elle est vide....

que faut-il faire de plus ? rajouter l'option create dans le pg_dump ???

pour info, sur le PC XP j'ai 1 autre base postgres et j'arrive, avec les même commandes, à faire un export de cette base pour l'importer dans une nouvelle base créé comme je dis au dessus...

donc si vous avez une idée, je suis preneur !
merci d'avance
MrSaladin
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h26   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

il m'est déjà arrivé d'avoir ce genre de problème avec Postgres 7.3...

En fait, dans certains cas, pg_dump s'emmêle un peu les pinceaux dans le choix de l'ordre dans lequel la création des tables/séquences/fonctions/vues ou l'intégration des données (avec COPY) doit s'effectuer. Il peut par exemple mettre la création d'une vue avant la création des tables dont elle est composée, ce qui provoque évidemment l'échec de la création de la vue et au final un schéma de base incomplet. Ce problème est référencé (il est même mentionné dans la doc de Postgres 7.x), et se pose généralement pour des bases plutôt complexes.

Dans ton cas si la structure est a priori ok (je t'invite toutefois à t'en assurer complètement), c'est que le problème se situe au niveau de l'ordre de la récupération des données qui ne doit pas respecter une contrainte de clé étrangère dans une (ou plusieurs) tables. Si c'est cela, pas d'autre solution que d'éditer manuellement le script SQL pour replacer les commandes dans le bon ordre. Il faut par contre que tu abandonnes le format binaire pour ton dump (sélectionné avec l'option -b) et passer au format texte pour accéder aux commandes SQL.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 12h22   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
bonjour,

merci pour ces infos.

donc en fait j'ai refait un pg_dump avec l'option -C,
maintenant la creation se passe bien, c'est au moment de restaurer les données que ca plante....
j'ai essayé de faire un pg_dump -a, c'est pareil....

MrSaladin
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 12h39   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
par expérience, quand ca merde, ajoute l'option '-d' voire '-D' lorsque tu crée ton dump de base.
C'est plus lent, mais ca plante moins souvent, en particulier lors de changements de version de pg.

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h51   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
effectivement c'est bien plus long !
le dump non à part qu'il est un peu plus gros, par contre le restore ca fait 40min qu'il tourne !
....des que c'est fini je vous tiens au courant !

merci
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 17h25   #6
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Citation:
Envoyé par MrSaladin
le dump non à part qu'il est un peu plus gros, par contre le restore ca fait 40min qu'il tourne !
Rien d'étonnant, plutôt que d'utiliser COPY qui récupère toutes les données d'une table en une seule transaction, cette option utilise à la place un INSERT par enregistrement. Pour peu qu'en plus tu aies des triggers et des checks sur ta table, bonjour la lenteur...

D'autant que si comme je l'ai suggéré le souci vient d'un ordre erroné de chargement des tables, ça ne va pas régler le problème...
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 18h15   #7
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Citation:
Envoyé par GrandFather
Rien d'étonnant, plutôt que d'utiliser COPY qui récupère toutes les données d'une table en une seule transaction, cette option utilise à la place un INSERT par enregistrement. Pour peu qu'en plus tu aies des triggers et des checks sur ta table, bonjour la lenteur...
on est bien d'accord Mais entre une restauration qui marche pas et une restauration qui prend du temps Quitte à désactiver les triggers/index

Citation:
Envoyé par GrandFather
D'autant que si comme je l'ai suggéré le souci vient d'un ordre erroné de chargement des tables, ça ne va pas régler le problème...
Idem , on est d'accord, mais MrSaladin a précisé que visiblement, c'est maintenant à la restauration des données que cela plante, d'où cette méthode peu orthodoxe
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 10h18   #8
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
bon alors hier soir en partant c'était pas fini alors j'ai laissé tourné mais ce matin c'était toujours bloqué sur la même table, j'ai fait un CTRL C, ça a continué rapidement sur les autres tables puis il y a eu des tonnes de messages d'erreurs : 400000 warnings !
alors que le dump fait 8Mo seulement...
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 12h10   #9
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
Citation:
Envoyé par GrandFather
Dans ton cas si la structure est a priori ok (je t'invite toutefois à t'en assurer complètement), c'est que le problème se situe au niveau de l'ordre de la récupération des données qui ne doit pas respecter une contrainte de clé étrangère dans une (ou plusieurs) tables. Si c'est cela, pas d'autre solution que d'éditer manuellement le script SQL pour replacer les commandes dans le bon ordre. Il faut par contre que tu abandonnes le format binaire pour ton dump (sélectionné avec l'option -b) et passer au format texte pour accéder aux commandes SQL.
après vérif, la structure parait correcte
j'ai donc refait l'export sans l'option -b, j'ouvre le fichier mais comment voir ce qui va pas ?
c'est chaud....surtout quand on connait pas grand chose aux BDD....

merci
MrSaladin
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 16h36   #10
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Citation:
Envoyé par MrSaladin
c'est chaud....surtout quand on connait pas grand chose aux BDD....
Euh, oui, dans ce cas, c'est très chaud... Le 1er message d'erreur (attention, ERROR, pas WARNING) doit t'indiquer quelle est la contrainte qui est violée. Ne tiens pas compte des messages suivants, ils sont le plus souvent la conséquence du premier.

Par exemple, imagine que tu restaures une table A et une table B, la table B contenant des clés étrangères pointant sur la table A. L'ordre normal de restauration est donc A puis B. Si pg_dump se trompe, il tentera de restaurer B puis A, et le script échouera inévitablement avec un message d'erreur indiquant la violation d'une contrainte d'intégrité. Il suffira d'éditer le script et de replacer les commandes SQL dans le bon ordre pour que cela fonctionne.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 11h06   #11
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 1
Points : 1
je vais essayer de regarder de plus pres....
merci
MrSaladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h14.


 
 
 
 
Partenaires

Hébergement Web