Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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: 1549

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: 1549

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

Powered by FluxBB