Récupérer résultat d'une réquête dans un tableau en shell (ksh)

Récupérer résultat d'une réquête dans un tableau en shell (ksh) - Shell/Batch - Programmation

Marsh Posté le 30-04-2020 à 16:33:08    

Bonjour,
 
Je me permets de faire appel aux développeurs (je ne le fais qu'en appoint...)
 
Je fais un script shell (ksh).
 
Cela pourrait très bien être une requête sql via sqlplus, même s'il s'agit ici d'une requête Hive, ça ne change pas ma question.
 
Je veux récupérer par une requête Hive (via beeline) 2 colonnes d'une table dans un tableau.
Je fais :
 
RESULTAT_REQUETE=`beeline [...] --showHeader=false --outputformat=csv2 -e "select colonnne1,colonnne2 from ma_table;"`
 
Cela me donne les bonne données mais en 1 seule variable d'une seule ligne et colonne.
 
Or, je voudrais que ça me rende un tableau à envoyer par mail du type :
 
colonne1 colonne2
toto 5
titi 3
tata 7
 
Pourriez- vous m'indiquer comment faire, svp ?
 
Merci par avance !


Message édité par toto777 le 04-05-2020 à 14:32:19
Reply

Marsh Posté le 30-04-2020 à 16:33:08   

Reply

Marsh Posté le 25-05-2020 à 17:49:51    

Bonjour,
 
Personne ne saurait m'aider, svp ?
 
Merci.

Reply

Marsh Posté le 26-05-2020 à 08:20:36    

Si j'ai bien compris, la variable RESULTAT_REQUETE contient une chaîne du genre : valCo1Enr1;valCol2Enr1\nvalCo1Enr2;valCol2Enr2\n....
 
Le plus simple serait de post-traiter cette variable en la splittant sur le séparateur \n puis splitter chaque valeur obtenue sur ";"
Après, tu affiches le résultat du traitement. Eventuellement, tu peux remettre tout ça dans un tableau HTML.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2020 à 09:10:40    

Bonjour rufo,
 
Désolé, je n'avais pas que tu m'avais répondu.
Je te remercie de ton conseil !
 
Suite aux conseils d'une autre personne, voici ce que j'ai fait :
 
J'ai 2 scripts :
 
- le script ma_requête_BDD.ksh contenant la requête :
 
#! /bin/ksh
beeline [...] --showHeader=false --outputformat=csv2 -e "select nom,count(*) from clients where nom in ${liste_clients};
 
- le script principal script_principal.ksh qui lance le script de la requête, met le résultat dans le fichier fic_resultat et envoie le mail :
 
./ma_requête_BDD.ksh | awk -F, '{print $1, (($2>0)?"Présent":"Absent" );}' > ${fic_resultat}
 
(cat <<EOCAT
From: expediteur@serveurmail.fr
To: destinataire@serveurmail.fr
Subject: Objet du mail
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
EOCAT
cat ${fic_resultat}) | /usr/lib/sendmail "destinataire@serveurmail.fr"
 
Pour info :
Si je mets :
text/html au lieu de text/plain
Cela m'envoie un mail avec 1 seule ligne au lieu des 4 lignes de mon fichier fic_resultat (car il n'a pas les balises html de passage à la ligne).
 
J'ai donc bien ce que je souhaite, à savoir :
Toto Présent
Tata Absent
Titi Présent
Tutu Présent


Message édité par toto777 le 28-05-2020 à 09:12:31
Reply

Marsh Posté le 28-05-2020 à 12:37:26    

Si tu mets text/html , c'est normal d'avoir tout sur une même ligne puisque ce que tu mets, c'est du texte simple. Les \n (retour à la ligne) ne sont pas interprétés, en html, c'est <br />, d'où ma remarque de faire un tableau avec <table>...</table> (+ <tr>, <th> et <td> ).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2020 à 16:21:39    

En effet Rufo, je me suis peut-être mal exprimé.
J'avais écrit ça en fait au cas où quelqu'un qui a un problème de ce type, ne comprend pas pourquoi, et tombe sur ce forum, ait l'explication.
Mais merci de l'indiquer car je n'ai pas dû être clair.
 
Merci en tout cas de ton aide !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed