PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 12/04/2017 10:52:43

meonais
Membre

Nommer une table avec nom concaténé

Bonjour,


Je ne sais trop comment intituler ce post... Peut-être aurez-vous des idées avec le développement de mon problème ?


J'ai un ensemble de requêtes qui donnent des résultats sur un ou plusieurs départements de France. Je fais choisir les départements souhaités dans un csv que j'importe avec copy (cette table [choix_dept] sera la jointure de toutes mes requêtes).


Mes requêtes aboutissent à plusieurs tables de résultats, nommées de cette manière : "t01_nom_du_traitement".
Est-il possible d'ajouter les numéros des départements choisis au nom de la table pour avoir quelque chose comme ça "t01_nom_du_traitement_01_69_26_07" ?


J'ai démarré mes recherches en créant une table temporaire avec un enregistrement regroupant les numéros de département :

CREATE TEMP TABLE tempzone AS(select array_to_string(array_agg(tmpzone),'-')  from (SELECT cast(insee_dep as varchar) FROM schema.choix_dept GROUP BY insee_dep) tmpzone);

et j'ai tenté (oui, je sais c'est plus que tiré par les cheveux) ça pour nommer la table...

CREATE TABLE schema.t01_nom_du_traitement_||tmpzone AS 
(expression);

Ce qui me génère (évidemment) le message suivant :

ERROR:  syntax error at or near "||"
LINE 1: CREATE TABLE roe.t01_nom_du_traitement_||tmpzone AS 
                                                  ^
********** Erreur **********

ERROR: syntax error at or near "||"
État SQL :42601

PS : je suis sous PostgreSQL 9.5

Dernière modification par meonais (12/04/2017 11:00:58)

Hors ligne

#2 12/04/2017 11:17:35

Arkhena
Membre

Re : Nommer une table avec nom concaténé

Bonjour,

Il va vous falloir utiiser du SQL dynamic pour faire ça:
https://www.postgresql.org/docs/9.5/sta … namic.html

Cordialement,

Arkhena

Hors ligne

#3 12/04/2017 11:20:45

gleu
Administrateur

Re : Nommer une table avec nom concaténé

Il faut passer par un langage de procédure stockée et une requête dynamique.

Hors ligne

#4 12/04/2017 11:34:38

meonais
Membre

Re : Nommer une table avec nom concaténé

Merci à vous,
je regarde tout ça

Hors ligne

#5 12/04/2017 14:06:09

meonais
Membre

Re : Nommer une table avec nom concaténé

Re bonjour,


Ce n'est pas tout à fait la même demande mais je suspecte la même réponse (SQL dynamique) à la question suivante :


J'importe (copy) des fichiers csv qui représentent des extractions de données à date fixe (la date de l'extraction n'est pas indiquée dans le champ du fichier).
Est-il possible de récupérer une partie du nom du fichier csv (par exemple 20170422 sur 20170422_extraction_donnee.csv) importé pour le réinjecter dans les requêtes (par exemple en suffixe de noms de tables de résultats) ?


Si ce n'est pas possible, je ne vois que la possibilité de faire créer (manuellement) un champ dans le csv, avec la date de l'extraction, puis seulement d'importer le csv.
A moins qu'il y ait d'autre piste à explorer ?


Merci d'avance pour vos retours,

Hors ligne

#6 12/04/2017 14:30:51

gleu
Administrateur

Re : Nommer une table avec nom concaténé

SQL dynamique une fois encore.

Hors ligne

Pied de page des forums