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 :

Passer une suite de commandes dans sqlplus via un script bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut Passer une suite de commandes dans sqlplus via un script bash
    Hello.

    Je rencontre des problèmes pour scripter l'action manuelle suivante dans une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ sqlplus user/pass @script.SQL #le script demande un paramètre à renseigner
    Rentrer le paramètre: param
    SQL> commit;
    Commit complete.
    SQL> exit;
    Donc il faut que ma fonction bash lance sqlplus avec en entrée script.SQL (facile).
    Puis entre le paramère demandé.
    Puis execute un commit.
    Puis execute un exit.


    Avez vous une idée?

    merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 403
    Points
    28 403
    Par défaut
    Les commandes commit et exit devraient être dans le script SQL.
    Ensuite, il suffit d'ajouter la valeur du paramètre à la suite de la ligne de commande et y faire référence dans le script par &1.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Malheureusement je ne peux modifier le script existant
    Je dois écrire une fonction bash qui déroule l'action manuelle que j'ai décrit.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    Par défaut
    Bonjour,

    expect est l'outil qui va permettre ça.

    c'est un langage à base de tcl.
    comme son nom l'indique à moitié, il permet de renseigner des commandes en attente d'une entrée.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    impossible de réaliser la suite d'actions en bash ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    Par défaut
    oui, pas moyen de faire interagir bash avec des commandes qui attendent une entrée.
    à la rigueur, passer les arguments sur l'entrée standard de la commande, mais pas "répondre à ses prompts"

    expect, lui, sait faire ça :
    attendre (expect) un prompt donné,
    pour ce prompt, fournir (send) une réponse adaptée.

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 302
    Points : 12 798
    Points
    12 798
    Par défaut
    Bonjour,

    Il me semble que ceci fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sqlplus user/pass @script.SQL param
    A essayer

    Cordialement.

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 403
    Points
    28 403
    Par défaut
    Il y manque le commit et le exit...

    A la condition que ton paramètre soit identifié par &1 dans le script, ceci devrait répondre à ton besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sqlplus user/pass <<-EoF
      @script.SQL param
      commit;
      exit;
    EoF

Discussions similaires

  1. Demarrer une suite de command dans cmd.exe depuis un Form
    Par Freektrax dans le forum C++Builder
    Réponses: 4
    Dernier message: 30/12/2006, 12h03
  2. afficher une suite de nombres dans une string
    Par hysah dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 18h51
  3. Réponses: 1
    Dernier message: 22/02/2006, 09h02
  4. [C#]Passer une date en paramètre dans Crystal Report
    Par choupinette dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/08/2005, 09h59
  5. [TRANSACT] passer une table d'entier dans un SELECT
    Par tiboleo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/04/2005, 10h22

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