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

Linux Discussion :

récupérer résultat d'une requête SQL en bash


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut récupérer résultat d'une requête SQL en bash
    Bonjour à tous,

    Je souhaite récupérer le résultat d'une requête SQL exécutée sous Oracle dans une variable bash mais je ne sais pas du tout comment faire.

    Je voudrais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sqlplus "/ as sysdba"
     
    RES = $(select count(1) from matable;)
     
    echo $RES
    Est-ce faisable ?

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Tu peux récupérer n'importe quel résultat venant d'un programme externe pourvu que ce programme affiche ledit résultat à l'écran

    Exemple: la commande "date" affiche la date à l'écran. ben en tapant
    res=$(date)
    tu récupères cette date dans ta variable "res"

    Donc pour ta requête c'est pareil. Prépare là, exécute-là et quand ton ordre sera correct et s'il affiche le bon résultat à l'écran, tu l'encapsules dans des parenthèses avec un beau $ devant et t'auras ton résultat de requête dans ta variable. Mais pas d'espace avant et après le "=" sinon ça marche pas.
    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]

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Ok. Merci pour ta réponse.

    Mais, je n'arrive pas à réaliser cela en mettant ma requête dans un fichier et en l'appelant comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table=$("@TailleTable.sql exit" | sqlplus "/ as sysdba")
    echo "table : " $table
    Sachant que la requête marche parfaitement.

    Il me met l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./purge.sh: line 10: @TailleTable.sql exit: command not found

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $(echo "@TailleTable.sql exit" | sqlplus "/ as sysdba")

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Milo59000 Voir le message
    Ok. Merci pour ta réponse.

    Mais, je n'arrive pas à réaliser cela en mettant ma requête dans un fichier et en l'appelant comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table=$("@TailleTable.sql exit" | sqlplus "/ as sysdba")
    echo "table : " $table
    Sachant que la requête marche parfaitement.
    Ah bon ? et si tu tapes depuis ton prompt shell la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "@TailleTable.sql exit" | sqlplus "/ as sysdba"
    Est-ce que ça fonctionne parfaitement ??? j'en suis pas trop sûr. A mon avis il te mettra pareil => @TailleTable.sql exit not found signifiant qu'il ne trouve pas la commande "@TailleTable.sql".

    Mygale1978 t'a donné la soluce. On doit mettre entre les parenthèses la commande exacte telle qu'on la tape en shell. Là, visiblement, ton but était d'envoyer à la commande sqlplus la chaine "@TailleTable.sql exit". Et l'envoi d'une chaîne dans une commande se fait via echo...
    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]

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Ok j'ai vu la solution. Mais le problème est qu'il ne me met pas la valeur souhaité dans la variable.

    En effet, au lieu de mettre la somme recherchée, il met la chaine de lancement de sqlplus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table :  SQL*Plus: Release 10

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Milo59000 Voir le message
    Ok j'ai vu la solution. Mais le problème est qu'il ne me met pas la valeur souhaité dans la variable.

    En effet, au lieu de mettre la somme recherchée, il met la chaine de lancement de sqlplus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table :  SQL*Plus: Release 10
    Faut travailler dans le bon sens
    1) tu trouves la requête (ou l'enchainement) qui te donne le bon résultat à l'écran quand tu le tapes directement depuis ton shell. Je le ferais bien moi-même mais comme je connais pas sqlplus ben je peux pas donc c'est à toi de bosser. Si l'instruction que tu trouves te donne le bon résultat mais agrémenté d'infos parasites (comme des mises en forme ou autres), ben tu continues via pipe sur des commandes de manipulation de string comme cut pour enlever tout ce qui est en trop pour qu'il ne reste que le résultat que tu attends
    2) une fois que t'as la bonne instruction, correcte, qui te donne le résultat et juste le résultat et que c'est nickel, ben tu la places entre parenthèses, tu mets un $ et une variable devant et tu auras alors le résultat dans la variable.

    Démonstration: je veux obtenir l'heure courante. Quand je tape
    j'obtiens
    Fri Sep 05 22:25:12 CET 2008
    J'obtiens bien l'heure mais j'ai plein de trucs en trop. Donc il va me falloir filtrer.
    Maintenant si je tape
    qui demande un isolement du 4° champ avec séparateur ' ', j'obtiens
    22:25:12
    qui est pile poil ce que je veux. me reste plus qu'à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res=$(date |cut -f4 -d' ')
    Et c'est fini
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le résultat d'une requête SQL (count)
    Par niano dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/09/2007, 11h41
  2. [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
  3. Récupérer et trier le résultat d'une requête SQL
    Par Bodom-Child dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/10/2006, 07h38
  4. [JTable] Récupérer le résultat d'une requête SQL
    Par malik1982 dans le forum Composants
    Réponses: 10
    Dernier message: 08/07/2006, 19h52
  5. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07

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