IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Requête mysql dans un fichier bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut Requête mysql dans un fichier bash
    Bonjour,


    Avec ce code bash j'affiche l'id du contenu qui m'interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql -u $login_db -D $nom_bd -h $hote_db -p$pass_bd  --default-character-set=$format_texte  -e "connect $nom_bd;  SELECT $select_noms_colonnes5_2 FROM $nom_table5 WHERE $colonne_recherche5_1 LIKE '$recherche5_1%' AND $colonne_recherche5_2 LIKE '$recherche5_2%'" | sed '1d' | while read lignes3; do  
    $lignes3" 
    done
    Résultat
    Dans une autre table , j'essaye d' afficher le contenu de la table avec l'id, donc avec la valeur de variable $lignes3 de la 1er requête (voir au dessus) dans ma requête sql06 (ci-dessous).

    mais quand je fait ceci c'est toute la table qui s'affiche sur des kilomètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '$lignes3%'" 
    mysql -u $login_db -D $nom_bd -h $hote_db -p$pass_bd  --default-character-set=$format_texte  -e "$sql06" | sed '1d' | while read lignes6; do  
    echo "resultat test 6 :" $lignes6 
    done
    Il m'affiche sur des kilomètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 : e-lall-on 
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 : e-lall-on 
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :  
    resultat test 6 :
    au lieu de m'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resultat test 6 : e-lall-on 
    resultat test 6 : e-lall-on

    Ma requête tel que je l'ai formulé (vérification avec : echo "resultat test 6 :" $lignes6)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat sql06 : SELECT fichier_cm_lumiere_all_On FROM bash WHERE id LIKE '%'
    Le " LIKE '%' " a la fin de la requête n'affiche pas la variable '$lignes3%'" de la requête sql06

    j'ai aussi essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id='$lignes3'"
    bash m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /home/serveur/Domotique/ordres/e-lall-on: line 260: Erreur de syntaxe près du symbole inattendu « done »
    /home/serveur/Domotique/ordres/e-lall-on: line 260: `done'

    Vérification de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat sql06 : SELECT fichier_cm_lumiere_all_On FROM bash WHERE id=''
    Idem pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'" $lignes3"\'"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'$lignes3%\' "
    Comment faire ?

    Merci.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    il faut que tu filtre la sortie pour n'avoir que les lignes non-vide au niveau du résultat pertinent (donc après l'echo)



    genre un grep ou un complément au sed.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Salut
    Il est plus que probable que ce soit ta requête de base qui te renvoie tout ça. Autrement dit pour toutes ces lignes tu as "id" qui like 65%.

    Citation Envoyé par xunil2003 Voir le message
    Comment faire ?
    Déjà tu devrais vérifier ton résultat (rajouter par exemple une colonne de plus ou bien faire un count ... where id like ...).
    Et pour ça, au lieu de passer par une étape bash qui peut-être mal écrite, mal formatée, mal quoi que ce soit, tu devrais tester directement dans mysql et taper "select truc from machin where id like '65%'" et select count(*) from truc where id like '65%'" voir ce que ça te renvoie...
    Ensuite tu peux rajouter un filtre "where id like ... and colonneX is not null" pour n'avoir, en final, que les lignes que tu recherches...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. requête mysql dans un script bash
    Par lettersto dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/02/2012, 23h49
  2. Requête MySQL dans du JSP
    Par BoyzInDaProject dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 03/03/2007, 12h58
  3. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 15h25
  4. Réponses: 3
    Dernier message: 04/01/2007, 17h42
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo