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 confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    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 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    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.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    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 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 647
    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.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    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 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 647
    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.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 344
    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 344
    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 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    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
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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