Script en shell avec requette sql
Résolu
Bonjour,
Je ne sais pas si c'est le bon forum mais je tente quand même.
Je voudrais créer un script qui m'affiche le résulat de ma requette sql. Ma question est simple :
omment en shell je peux récupérer les données que renvoi ma requette (sachant qu'elle renvoie 2 colonnes avec X lignes)?
Mes recherches m'ont permis de trouver comment l'executer mais pas de récupérer les valeurs.
Est-ce qu'il suffit de faire :
MaVar='sql -S serveur -D base -U utilisateur -P mot_de_passe -b Base <requetes.sql'
Merci d'avance
--
---------------------------------------------------------------------
La vie est-elle trop courte pour rester derrière son écran?
Je ne sais pas si c'est le bon forum mais je tente quand même.
Je voudrais créer un script qui m'affiche le résulat de ma requette sql. Ma question est simple :
omment en shell je peux récupérer les données que renvoi ma requette (sachant qu'elle renvoie 2 colonnes avec X lignes)?
Mes recherches m'ont permis de trouver comment l'executer mais pas de récupérer les valeurs.
Est-ce qu'il suffit de faire :
MaVar='sql -S serveur -D base -U utilisateur -P mot_de_passe -b Base <requetes.sql'
Merci d'avance
--
---------------------------------------------------------------------
La vie est-elle trop courte pour rester derrière son écran?
Configuration: Mac OS X Firefox 3.0.11
26 réponses
Résumé de la discussion
On cherche à récupérer les résultats d'une requête SQL en shell, qui renvoie deux colonnes et plusieurs lignes, sans les afficher directement. Des échanges explorent des approches variées pour capturer et manipuler ce flux, y compris des substitutions et des redirections vers un fichier. La solution opérationnelle propose de construire la requête et de la passer au client MySQL via un pipe, puis de rediriger la sortie vers un fichier texte. En pratique, cela peut nécessiter d'adapter le chemin et les permissions, notamment sur Mac OS X avec MAMP, afin que la commande puisse écrire dans le fichier sans erreurs.
-
Contributeurenlève le <
sed -i -e '/CLnom STnom ADippublic ADlogin/d' fichier -
ca marche enfin (pour info les espaces entre CLnom, STnom ... c'était des tabulations... )
merci a toi je vais pourvoir finaliser tout ca et me faire un super script. j'espère te rendre la pareil un jour. -
oui c'est pour ca que je voulais faire une boucle pour aller chercher chaque ligne mais si la commande sed -e '/CLnom STnom ADippublic ADlogin/d' < fichier permet de le faire directement c'est encore mieux sauf que celle ci ne fonctionne pas....
j'ai testé de mettre sed -i -e '/CLnom STnom ADippublic ADlogin/d' < fichier mais il me repond sed: -i may not be used with stdin
sur le site cité plus haut je ne trouve pas les bonnes options et ni sur le net je ne doit pas savoir comment les chercher correctement...
merci encore
-
Contributeurla commande que je t'ai indiquée supprime toutes les lignes qui contiennent le texte
sed -e '1d' ne détruit que la ligne 1
-
genial ca marche du tonnerre mais il me reste a le mettre dans une boucle pour que toutes les lignes que je veux soit suprimées.
-
Contributeurajouter -i
sed -i -e .... -
je suis peu etre un peu bête mais ca marcha pas le fichier reste intact.
j'ai testé cette commande que j'ai trouvé grace à http://www.commentcamarche.net/faq/sujet 4839 sed supprimer une ou plusieurs lignes d un fichier
sed -e '1d' resultat2.txt
il m'affiche bien ce que je veux mais le fichier en lui meme est toujours intact.
auto115:bin nbonnet$ sed -e '1d' resultat2.txt
Scipt equation 10.11.12.13 el77167157@e-liance
---------------------------------------------------------------------
La vie est-elle trop courte pour rester derrière son écran? -
Contributeursoit depuis un fichier
sed -e '/CLnom STnom ADippublic ADlogin/d' < fichier
soit depuis un pipe line
ta_commande ¦ sed -e '/CLnom STnom ADippublic ADlogin/d' -
oki merci bien j'ai réussi a me connecter a ma base de donnée et à lancer ma requete. sauf que cette dernière me renvoie un fichier comme ceci :
CLnom STnom ADippublic ADlogin
Scipt equation 10.11.12.13 login
CLnom STnom ADippublic ADlogin
Scipt2 equation2 10.11.12.13 login
J'aimerais bien suprimer les lignes :
CLnom STnom ADippublic ADlogin
je n'arrive pas a faire ma boucle avec un while. Tu peux m'aider pour ceci?
-
Contributeuril faut ajouter /Applications/MAMP/Library/bin dans ton PATH pour appeler simplement mysql:
export PATH=$PATH:/Applications/MAMP/Library/bin
ajouter cette ligne à la fin de .bashrc pour que se soit permanent -
enfin la solution
printf "SELECT login, nombre FROM adsl"|/Applications/MAMP/Library/bin/mysql -D test_bagotage>test.text
voila la ligne qu'il me faut pour pouvoir reupérer les données de ma table mais dans un fichier text. Il me reste plus qu'a travailler sur ce fichier pour pour utiliser les données -
il ne me trouve pas non plus mais j'ai trouver en utilisant
/Applications/MAMP/Library/bin/mysqladmin --host=127.0.0.1 --user=nbonnet --port=8889
au lieu de
sql
dans le script cela ne me retourne plus d'erreur sauf qu'il faut que je trouve pas les bonnes options pour me connecter à la base de donnée. -
Contributeuressaye
ls /Applications/MAMP/Library/bin
ou ne serait-ce pas mysql ?
ou find /Applications/MAMP -name mysql -ls
-
j'ai regardé aux alentours il y a un script pour le démarrage du service MySql qui commence par
/Applications/MAMP/Library/bin/mysqld_safe
sauf que lorsque je met ceci dans mon script j'ai en retour
chown: /Applications/MAMP/db/mysql/auto115.intra.err: Operation not permitted
je vois pas quelle est l'erreur j'ai tenté de mettre le chown sur nbonnet:nbonnet car il était sur nbonnet:admin mais ca marche toujours pas -
Oui il est dans /Applications/MAMP/
Il faut que je lance la commande depuis ce répertoire? -
Contributeurest ce qu'il y a un dossier MAMP ?
-
J'ai installé MAMP et la commande ne me retourne aucun resultat.
-
Contributeursql est bien installé ?
essaye
find /usr -type f -name sql -ls -
apparemment il n'y a pas de variable d'environnement et le find me le trouve pas.
auto115:~ nbonnet$ set | grep -i sql
auto115:~ nbonnet$ find / -type f -name sql -ls
find: /.fseventsd: Permission denied
find: /.Spotlight-V100/Store-V1: Permission denied
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
find: /Library/Application Support/Apple/ParentalControls/Users: Permission denied
find: /Library/Application Support/Apple/Remote Desktop/Client: Permission denied
find: /Library/Application Support/Apple/Remote Desktop/Task Server: Permission denied
find: /Library/Application Support/Lobotomo Software/IPSecuritas: Permission denied
find: /Library/Application Support/VPN Tracker 4/cert: Permission denied
find: /Library/Caches/com.google.MacFUSEAutoinstaller.Keystone.0: Permission denied
find: /Library/Caches/com.google.UpdateEngine.Framework.0: Permission denied
find: /Library/Logs/Console/501: Permission denied
find: /Library/PreferencePanes/Sybase.prefPane: Permission denied
find: /net/localhost: Operation timed out
find: /net/broadcasthost: Operation timed out
et ceci n'en fini plus
puis
-
Contributeuril faut savoir où est installé l'exécutable sql
y a-t-il une variable d'environnement ? set ¦ grep -i sql
sinon le chercher
find / -type f -name sql -ls
- 1
- 2
Suivant