Bash et resultat de requete SQL
Résolu
wally
-
wally -
wally -
Bonjour tout le monde,
je cherche à récupérer le resultat d'une requete qui me retourne plusieur ligne
voici mon script shell
j'aurai voulu que le résultat soit
champ1(valeur_champ1) - champ2(valeur_champ2)
champ1(valeur_champ1) - champ2(valeur_champ2)
champ1(valeur_champ1) - champ2(valeur_champ2)
et au lieu j'ai le resultat
quelqu'un pourrait-il m'aider svp ?
d'avance merci.
je cherche à récupérer le resultat d'une requete qui me retourne plusieur ligne
voici mon script shell
requete="connect ma_base; SELECT champ1,champ2 FROM ma_table"
mysql -u root -p$rootMysqlPass -e "$requete" | while read RESULTAT
do
champ1=$(echo "${RESULTAT}"|awk -F\| '{ print $1 }')
champ2=$(echo "${RESULTAT}"|awk -F\| '{ print $2 }')
echo "champ1($champ1) - champ2($champ2)"
done
j'aurai voulu que le résultat soit
champ1(valeur_champ1) - champ2(valeur_champ2)
champ1(valeur_champ1) - champ2(valeur_champ2)
champ1(valeur_champ1) - champ2(valeur_champ2)
et au lieu j'ai le resultat
champ1(champ1 champ2) - champ2() champ1(valeur_champ1 valeur_champ2) - champ2() champ1(valeur_champ1 valeur_champ2) - champ2() champ1(valeur_champ1 valeur_champ2) - champ2()
quelqu'un pourrait-il m'aider svp ?
d'avance merci.
Configuration: Windows XP Firefox 3.0.4
8 réponses
-
requete="connect ma_base; SELECT champ1,champ2 FROM ma_table" mysql -u root -p$rootMysqlPass -e "$requete" | sed '1d' | while read nom pnom age; do echo "$nom - $pnom - $age" done
-
requete="connect ma_base; SELECT champ1,champ2 FROM ma_table" mysql -u root -p$rootMysqlPass -e "$requete" | while read nom pnom age; do commande1 $nom $age $pnom commande2 $nom $pnom $age done
Bien sur, le séparateur de champ étant un espace ou une tabulation et non pas un "|" auquel cas il faudrait le préciser en début de boucle...
-
Salut,
Affiche-nous un exemple de sortie générée par ta requête SQL, sans quoi on ne te sera d'aucun secours.
-
bonjour merci de votre réponse,
j'ai modifier en donnant un nom à champ1 etc...
var_dream=`mysql -u root -p$rootMysqlPass -B --exec="connect ma_base; SELECT nom,pnom,age FROM ma_table"` echo "$var_dream"
et la sortie estnom prenom slots dupond jean 32 dumont benoit 22 pondu françois 43
et j'aimerai pouvoir faire un traitement sur chaque ligne ( row ) de retour
- boucle sur le resultat de la requête nom="valeur du champ nom" prenom="valeur du champ prenom" age="valeur du champ age" echo "$nom - $prenom - $age" - fin de la boucle
Je sais pas si je m'exprime comme il faut
encore merci de votre aide -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
[tmpfs]$ cat fich nom prenom slots dupond jean 32 dumont benoit 22 pondu françois 43 [tmpfs]$ while read nom prenom age;do echo "$nom - $prenom - $age";done < fich nom - prenom - slots dupond - jean - 32 dumont - benoit - 22 pondu - françois - 43 [tmpfs]$
Mais bon si c'est juste pour rajouter un tiret entre chaque champ, il y a d'autres voies plus simple pour y arriver ;-))
-
merci encore de votre réponse,
je n'ai pas compris ou je devais mettre[tmpfs]$ while read nom prenom age;do echo "$nom - $prenom - $age";done < fich nom - prenom - age dupond - jean - 32 dumont - benoit - 22 pondu - françois - 43 [tmpfs]$
désolé je débute
enfaite je doit utiliser les variable ainsi créer à chaque ligne pour passer des paramètre a une autre exécution
exemple :- boucle sur le resultat nom="valeur nom" prenom="valeur pnom" age="valeur age" ici je lance une exécution avec comme argument mes variable commande1 nom age pnom commande2 nom pnom age - fin de la boucle
Le trait d'union était juste pour tester, je pourrait alors utiliser les variable pour exécuter une action dans sa boucle
et à quoi correspond [tmpfs]$ ?
encore une fois merci de votre aide -
merci beaucoup celà fonctionne parfaitement
j'ai juste un souci c'est que il me retourne en premiere le nom des colonnerequete="connect ma_base; SELECT champ1,champ2 FROM ma_table" mysql -u root -p$rootMysqlPass -e "$requete" | while read nom pnom age; do echo "$nom - $pnom - $age" done
comme je l'ai dit ca marche à merveille grâce à vous et le resultat des echo estnom - prenom - age dupond - jean - 32 dumont - benoit - 22 pondu - françois - 43
j'ai mit en gras la ligne concerné
est-il possible d'empêcher le retour des nom de colonne dans le résultat ?
je tiens encore à vous remercie, sans votre aide j'en serait pas là -
mille fois merci
vous avez résolu définitvement mon problème
grand grand GRAND merci
je signale le sujet résolu :D