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

#1 mar. 24 janvier 2012 09:07

cyril_c
Membre
Lieu: Périgueux
Date d'inscription: 13 janv. 2009
Messages: 174
Site web

[POSTGIS] Restauration d'une table

Bonjour
J'ai une question à propos de la restauration d'une table dans postgis. J'aurais voulu savoir si postgis gérait la subversion?
J'explique rapidement le contexte. J'ai un outil de saisie terrain qui remplit une base postgis en local, puis je fais une sauvegarde que je restaure sur mon serveur de production. Par contre, si je restaure une table avec une clef primaire, il me mets une erreur, donc au préalable, je dois supprimer cette table, et s'il n'y a pas de clef primaire, il me copie toute la table sauvegardé à la suite et donc ça fait des doublons.

Donc je voulais savoir si postgis avait une fonction de mise à jour de table ou s'il faut soit même se créer une fonction qui compare tous les champs?

Merci pour vos lumières

Hors ligne

 

#2 mar. 24 janvier 2012 11:05

Nicolas Ribot
Moderateur
Lieu: Toulouse
Date d'inscription: 9 sept. 2005
Messages: 747

Re: [POSTGIS] Restauration d'une table

cyril_c a écrit:

Bonjour
J'ai une question à propos de la restauration d'une table dans postgis. J'aurais voulu savoir si postgis gérait la subversion?
J'explique rapidement le contexte. J'ai un outil de saisie terrain qui remplit une base postgis en local, puis je fais une sauvegarde que je restaure sur mon serveur de production. Par contre, si je restaure une table avec une clef primaire, il me mets une erreur, donc au préalable, je dois supprimer cette table, et s'il n'y a pas de clef primaire, il me copie toute la table sauvegardé à la suite et donc ça fait des doublons.

Donc je voulais savoir si postgis avait une fonction de mise à jour de table ou s'il faut soit même se créer une fonction qui compare tous les champs?

Merci pour vos lumières

Bonjour,

L'erreur générée par la clé primaire me semble bien normale, et meme salutaire:
Si vous voulez eviter les doublons, il faut bien, au moment de la restauration, prendre en compte ces erreurs.
Le pb doit venir du fait que cette mise a jour se fait dans une transaction: si une erreur est detectée pdt la transaction, celle-ci est annulée entierement.
Dans votre contexte, il faut sortir d'une transaction: l'erreur sur la clé primaire en double ne doit pas etre bloquante, pour permettre les autres insertions, mais juste informative (pour vérifier que l'erreur porte bien sur ces doublons, et pas autres chose).

Pour eviter de corrompre la table (en laissant une erreur se dérouler sans faire de rollback), je vous conseille, juste avant la restauration sur la base de prod, de faire une sauvegarde rapide de cette table:
create table matable_sauvegarde as select * from matable;

S'il se passe qqche de mal, vous pourrez revenir a la table de prod tres facilement.

Pourriez-vous nous décrire votre procedure de restauration, pour voir a quelle moment la transaction entre en jeu ?

Nicolas

Hors ligne

 

#3 mar. 24 janvier 2012 11:22

cyril_c
Membre
Lieu: Périgueux
Date d'inscription: 13 janv. 2009
Messages: 174
Site web

Re: [POSTGIS] Restauration d'une table

La procédure est simple, je passe par pgadmin, je choisis le localhost, clique droit sur la table, sauvegarder. Puis je me mets sur la base sur le serveur distant qui m'intéresse, clique droit, restaurer. J'essaye de faire ça manuellement avant de créer un petit script.

Je comprends bien l'erreur avec une pk, mais je pensais, naïvement, que s'il y avait déjà un identifiant présent, il faisait un update de la ligne, et si la ligne n'existait pas, il faisait un insert. Mais apparemment non!

Dernière modification par cyril_c (mar. 24 janvier 2012 11:23)

Hors ligne

 

#4 mar. 24 janvier 2012 12:04

Nicolas Ribot
Moderateur
Lieu: Toulouse
Date d'inscription: 9 sept. 2005
Messages: 747

Re: [POSTGIS] Restauration d'une table

cyril_c a écrit:

La procédure est simple, je passe par pgadmin, je choisis le localhost, clique droit sur la table, sauvegarder. Puis je me mets sur la base sur le serveur distant qui m'intéresse, clique droit, restaurer. J'essaye de faire ça manuellement avant de créer un petit script.

Je comprends bien l'erreur avec une pk, mais je pensais, naïvement, que s'il y avait déjà un identifiant présent, il faisait un update de la ligne, et si la ligne n'existait pas, il faisait un insert. Mais apparemment non!

Non effectivement.
La restauration d'une table, ce sont des insert ou copy suivant le mode choisi.
Dans votre cas, il faut faire un update (tous les champs deja existants), puis un insert (les nouveaux champs)

Nico

Hors ligne

 

#5 mar. 24 janvier 2012 12:16

cyril_c
Membre
Lieu: Périgueux
Date d'inscription: 13 janv. 2009
Messages: 174
Site web

Re: [POSTGIS] Restauration d'une table

merci et bonne journée

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |