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Ă© ?

#1 Fri 05 June 2020 11:58

YasmineB
Participant occasionnel
Date d'inscription: 20 Dec 2017
Messages: 19

Intégrer une variable dans un nom de table [PG ADMIN]

Bonjour Ă  tous,

Je travaille sur pg admin 4.12 et je ne parviens pas à résoudre mon problÚme depuis plusieurs jours malgré mes recherches.

Je souhaiterai intĂ©grer une variable dans le nom de mes tables pour qu'elle soit prise en compte lorsque je les appelle dans ma requĂȘte (INSERT INTO, FROM...).

Exemple concret : j'ai une table pour chaque dĂ©partement nommĂ©e avec le numĂ©ro de dĂ©partement (cadastre_95, cadastre_51, cadastre_02...) et lors de la mise Ă  jour des donnĂ©es attributaires, je dois remplacer autant de fois le numĂ©ro de dĂ©partement que le nombre de fois oĂč la table est appelĂ©e (parfois jusqu'Ă  10 fois).
Pour contrer ce problĂšme j'aimerai utiliser une variable qui soit le numĂ©ro de dĂ©partement pour n'avoir qu'Ă  changer celle-ci dans ma requĂȘte.

Voilà mon code qui, bien-sûr, ne fonctionne pas mais ça pourrait vous éclairer sur ma démarche :
DO $$
DECLARE variable text:= 14;
BEGIN
INSERT INTO foncier.cadastre_+variable(a, b)
SELECT 'tata', 'toto';
END $$;

Pouvez-vous m'éclairer de votre lanterne ?
Je vous remercie pour votre aide.

Yasmine

Hors ligne

 

#2 Fri 05 June 2020 12:21

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

Re: Intégrer une variable dans un nom de table [PG ADMIN]

Bonjour,

Lorsque vous voulez modifier le nom des objets dans une requete SQL, en pl/pgsql, il faut utiliser la syntaxe:
execute "string"
(https://www.postgresql.org/docs/9.6/plp … CUTING-DYN)

Code:

...
execute format('insert into foncier.cadastre_%s ...', code_dep); 
...

(au fait,  pgadmin 4.2 est un client, qui peut se connecter a n'importe quelle version de PG: l'info importante ici est la version de PG et postgis que vous utilisez, pas le client)

Nicolas

Hors ligne

 

#3 Fri 05 June 2020 13:47

YasmineB
Participant occasionnel
Date d'inscription: 20 Dec 2017
Messages: 19

Re: Intégrer une variable dans un nom de table [PG ADMIN]

Bonjour,

Merci beaucoup pour votre rĂ©ponse que je garde en tĂȘte car trĂšs intĂ©ressante. En revanche, j'ai la contrainte de ne pouvoir travailler que sur l'interface de pg admin 4 directement donc je ne peux pas passer en pl/pgsql... Savez-vous comment faire dans ce cas ?..

Je vous remercie.

Yasmine

Hors ligne

 

#4 Fri 05 June 2020 15:55

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

Re: Intégrer une variable dans un nom de table [PG ADMIN]

PgAdmin 4 est un client: vous pouvez lancer tout le sql et pl/pgsql que vous voulez Ă  travers ce client vers une bd PG !!

Vous pouvez créer des fonctions en pl/pgsql, des block anonymes (comme ce que vous avez fait) etc.
Vous pouvez créer des fonctions dans tous les langages supportés (a part c/c++) avec ce client: plpython, pljava, plperl, etc.

(et si vous avez ce client, alors vous avez les parametres de connexion a la BD: vous pouvez utiiiser le client de votre choix: psql, dbeaver, datagrip, qgis... (sauf dans le cas ou pgAdmin4 est lui-meme sur un serveur, et que vous n'avez pas d'accĂšs direct Ă  la BD depuis votre poste)

Nicolas

Hors ligne

 

#5 Mon 08 June 2020 10:45

YasmineB
Participant occasionnel
Date d'inscription: 20 Dec 2017
Messages: 19

Re: Intégrer une variable dans un nom de table [PG ADMIN]

Bonjour,
Je vous remercie pour vos éclairages, je vais m'y atteler.

Yasmine

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo