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 :

Sortie de requête SQLPLUS dans une variable dans un shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2017
    Messages : 38
    Par défaut Sortie de requête SQLPLUS dans une variable dans un shell
    Bonjour,

    Je souhaite récupérer le résultat d'un requête sqlplus afin que chacune des valeurs-résultat soit une variable.
    J'ai écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $SQLPLUS  user/motdepasse@PDBessai @/home/tutu/TITI/script/requete.sql
    J'obtiens bien le résultat de ma requête si j'ajoute >RESULT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $SQLPLUS  user/motdepasse@PDBessai @/home/tutu/TITI/script/requete.sql >RESULT
    mais avec des informations du type :
    SQL*Plus: Release 19.0.0.0.0 - Production on Jeu. Juin 20 08:18:00 2024
    Version 19.10.0.0.0

    Copyright (c) 1982, 2020, Oracle. All rights reserved.

    Heure de la dernière connexion réussie : Mer. Juin 19 2024 15:49:31 +02:00

    Connecté à :
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.10.0.0.0

    1) Comment faire pour ne plus avoir ce type d'informations
    2) Comment sortir les résultats de ma requête pas à pas dans une variable ?

    Merci d'avance pour vos idées,

    FredNV

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    pourquoi écris-tu $SQLPLUS ?
    as-tu lu le man pour voir s'il est possible de ne pas avoir les en-têtes dans la sortie du programme ?

    je vois que tu es un grand débutant (parce que tu ne montres pas comment mettre la sortie d'une commande dans une variable, ni connecter (pipe) la sortie d'une commande à l'entrée d'une autre; sais-tu même ce que sont les entreé/sortie et les codes de retour d'une commande ?! ).

    tu dois lire les tutos avant de poser une question sur les forums, puis expliquer comment «ça marche pas».
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2017
    Messages : 38
    Par défaut
    Sinon, j'ai tenté ça pour avoir le résulat de ma commande dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESULT=$($SQLPLUS  user/motdepasse@PDBessai @/home/tutu/TITI/script/requete.sql)
    Je pursuis pour avoir chaque résultat dans une variable...

    Cordialement,

    FredNV

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Bonjour

    N_BaH te demande si tu as lu la doc, tu ne réponds pas
    Si c'est juste supprimer l'entête, existe une option "silent" (comme le client mysql), mais ceci n'est pas du bash, juste utiliser son outil. Si tu ne trouve pas la doc, existe un forum oracle

    Pour le coté bash, puisque tu n'indiques rien sur le format de sortie, aucune idée de ce que tu désires faire véritablement (une variable par ligne ou ligne/colonne ? une matrice, un tableau, une liste ... dates, réels, ...)

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2017
    Messages : 38
    Par défaut
    Bonjour,

    Merci papajoker, je ne connaissais pas l'option silent et du coup en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $SQLPLUS -S  user/motdepasse@PDBessai @/home/tutu/TITI/script/requete.sql
    je n'ai plus cette vilaine entête.

    Oui, je ne suis pas trés claire dans la formulation de ce que je souhaite.
    J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESULT=$($SQLPLUS  user/motdepasse@PDBessai @/home/tutu/TITI/script/requete.sql)
    Donc maintenant j'ai bien tout le résultat de ma requête dans la variable RESULT.
    Cela donne une serie de nombres séparés par des espaces : 456 886 999 etc....

    Je vais chercher comment lire ces nombres un à un pour que chaque nombre soit une variable elle même que je pourrai utiliser ailleurs ....suis-je plus claire ?

    Cordialement,

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    pas forcément
    Le résultat n'est qu'une ligne ? donc c'est un tableau si oui, reste à le convertir directement en "tableau" bash
    que chaque nombre soit une variable
    un tableau est une variable qui est constitué de valeurs : resultat[0] ... resultat[9]

    Ou boucler sur chaque valeur mais le traitement peut-être complexe

  7. #7
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2017
    Messages : 38
    Par défaut
    Je me dis que je peux utiliser split avec comme séparateur "espace" puisque chaque valeur est séparée de la suivante par un espace ...
    Je suis en train de chercher la syntaxe exacte.

    Cordialement,

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

Discussions similaires

  1. [Python 3.X] Problème sortie de la valeur d'une variable d'une fonction
    Par Equinox612 dans le forum Général Python
    Réponses: 7
    Dernier message: 12/05/2017, 07h53
  2. Réponses: 1
    Dernier message: 07/05/2014, 18h27
  3. tester l'existence d'une variable en bourne SHELL
    Par nicolas.pailheret dans le forum Linux
    Réponses: 1
    Dernier message: 14/04/2009, 17h28
  4. Passer une variable C en Shell avec un system()
    Par electro38 dans le forum Linux
    Réponses: 9
    Dernier message: 24/02/2008, 10h26

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