1

Topic: Extract donnees tableau (\n) dans une requete ou vue.

Bonjour,

  Si d'aventure vous serez amenés à devoir extraire les données contenus dans un tableau (\n).

  Entité :
      PLAN D'ACTION {ID,TITLE,...,TABLEAU {ACTION, DATE_AC, RESPONSABLE_AC,...,COMPLETUDE_AC, PERTINENCE_AC, LLC_AC},...}

  Objectif :
      Lister dans une requête ou vue les actions en fonction de leur complétude par exemple

  PERFORMANCES
  SELECT SANS LES ZOMBIES (champs nommés) 315 ligne(s) Temps d'exécution total : 3,921.918 ms, moyenne d'enregistrements dans les tableaux (\n) 38 - MIN/MAX[9,73]
  EXTRACT 597 ligne(s) Temps d'exécution total : 129.022 ms.

  SELECT title, adate, libelle_action, date_action, completude_action, suivi_action
  FROM (
     SELECT title,adate
       regexp_split_to_table(action, '\n') AS libelle_action,
       regexp_split_to_table(date_ac, '\n') AS date_action,
       regexp_split_to_table(completude_ac, '\n') AS completude_action,
       regexp_split_to_table(watch_ac_flag, '\n') AS suivi_action
       FROM doc3180
       -- RECUP EGALEMENT LES ENREGS VERROUILLES
       WHERE doctype != 'Z'
       AND watch_ac_flag IN ('CRITIQUE', 'REDONDANT', 'STAGIAIRE') as suivi_action
       -- COMPETUDE < 25 = PHASE DE PREPARATION DONC NON PRIS EN COMPTE
       AND completude_ac > 25 
) AS compl_actions

WHERE bar != '-'
ORDER BY adate, date_action, completude_action


Il est possible de ranger cela dans une vue, aux fins de jointures ou autre traitement, c'est ce que je fais (utilisation de jasper comme serveur de rapports...).

En espérant avoir aidé.

Cordialement,

2

Re: Extract donnees tableau (\n) dans une requete ou vue.

Bonjour,

Merci beaucoup pour l'astuce. C'est très intéressant

Mise en place d'outils de gestion d'entreprises basés sur des logiciels libres
http://www.infosaone.com/

3

Re: Extract donnees tableau (\n) dans une requete ou vue.

Bonjour,

Pour compléter la réponse ci-dessus, l'expression que j'utilise pour le casting en array d'un tableau est la suivante :

regexp_split_to_array(replace(toto, \'<BR>\', E\'\\n\'), E\'\\n\' ) => ça permet de prendre en compte la multiplicité à plusieurs niveaux (pour les docid)

De plus, on peut aussi utiliser la même manipulation dans les where pour obtenir des opérateurs autrement difficile à mettre en place avec notamment les ANY et les ALL de postgres.

Pour finir sur le sujet, il existe une demande dans le tracker pour que le format array devienne le format natif de sauvegarde des éléments multiples (http://dev.dynacase.org/issues/2761).

4

Re: Extract donnees tableau (\n) dans une requete ou vue.

Bonjour,

Concernant les tableaux et Postgres, je suis tombé sur ce lien : http://postgresguide.com/sexy/arrays.html.

Je ne sais plus de quel fil rss ou twitts il provient mais si ça peut aider quelqu'un dans un développement...

zat