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 Mon 02 August 2010 09:41

stephanie.guillaumin
Juste Inscrit !
Date d'inscription: 13 Oct 2009
Messages: 3

Fonction Update sur plusieurs tables sous postgres/postgis

Bonjour,

J'ai plusieurs base de données sous postgres/postgis composées chacune de plusieurs tables et je souhaiterai utiliser la fonction update sur plusieurs tables de manière simultanée dans la même.

L'objectif est de mettre à jour une colonne identique dans chacune des tables.

Merci de votre aide.

Hors ligne

 

#2 Mon 02 August 2010 09:55

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: Fonction Update sur plusieurs tables sous postgres/postgis

On m'arrêtera si je me trompe, mais ce n'est pas l'intérêt des jointures ?


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#3 Mon 02 August 2010 10:18

stephanie.guillaumin
Juste Inscrit !
Date d'inscription: 13 Oct 2009
Messages: 3

Re: Fonction Update sur plusieurs tables sous postgres/postgis

L'objectif serait de remplir une colonne (champ code INSEE) sur toutes les tables d'une base sans faire appel à une jointure.

Exemple :

Update "nom de table"
Set "nom du champs"=83000
where "nom du champs" is null

En vu de cet exemple je souhaite l'appliquer à plusieurs tables en même temps

Hors ligne

 

#4 Mon 02 August 2010 10:35

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

Re: Fonction Update sur plusieurs tables sous postgres/postgis

stephanie.guillaumin a écrit:

L'objectif serait de remplir une colonne (champ code INSEE) sur toutes les tables d'une base sans faire appel à une jointure.

Exemple :

Update "nom de table"
Set "nom du champs"=83000
where "nom du champs" is null

En vu de cet exemple je souhaite l'appliquer à plusieurs tables en même temps


Bonjour,

Plusieurs bases, ou plusieurs tables ?

Sur plusieurs bases en meme temps, il faudra passer par un langage style python, java, ruby ou autre (plpython permet de faire ca en etant tres lié a la base) et scripter les updates sur les tables.

Sur plusieurs tables d'une meme base en meme temps, il faudra aussi scripter, mais un langage de base de données suffit: plpgsql, pl/java, plpython: on peut imaginer une fonction qui recoit en parametre une liste de table, une liste de colones a mettre a jour et une liste de valeur.
ou une requete trouvant les tables depuis le catalogue postgresql, si ces tables ont des noms "identifiables".

Nicolas

Hors ligne

 

#5 Mon 02 August 2010 10:43

stephanie.guillaumin
Juste Inscrit !
Date d'inscription: 13 Oct 2009
Messages: 3

Re: Fonction Update sur plusieurs tables sous postgres/postgis

Sur plusieurs tables d'une meme base en meme temps, il faudra aussi scripter, mais un langage de base de données suffit: plpgsql, pl/java, plpython: on peut imaginer une fonction qui recoit en parametre une liste de table, une liste de colones a mettre a jour et une liste de valeur.
ou une requete trouvant les tables depuis le catalogue postgresql, si ces tables ont des noms "identifiables".


C'est exactement cela que je veux faire mais comment faire pour insérer cette fonction dans l'update. La requete trouvant les tables depuis le catalogue postgres est la suivante :
select tablename from pg_tables
where schema name=public

Ensuite comment relier cette requete à l'update afin de l'appliquer sur les tables.

Merci

Hors ligne

 

#6 Mon 02 August 2010 11:20

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

Re: Fonction Update sur plusieurs tables sous postgres/postgis

stephanie.guillaumin a écrit:

Sur plusieurs tables d'une meme base en meme temps, il faudra aussi scripter, mais un langage de base de données suffit: plpgsql, pl/java, plpython: on peut imaginer une fonction qui recoit en parametre une liste de table, une liste de colones a mettre a jour et une liste de valeur.
ou une requete trouvant les tables depuis le catalogue postgresql, si ces tables ont des noms "identifiables".


C'est exactement cela que je veux faire mais comment faire pour insérer cette fonction dans l'update. La requete trouvant les tables depuis le catalogue postgres est la suivante :
select tablename from pg_tables
where schema name=public

Ensuite comment relier cette requete à l'update afin de l'appliquer sur les tables.

Merci


Tel que je le vois, ca serait le contraire: la fonction lance les update:

create function batchUpdate(cols, vals)...

for col in cols LOOP
   update table set col = vals[...];
end loop

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB