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 :

execution d'un .sql dans un .ksh


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut execution d'un .sql dans un .ksh
    Bonjour

    je veux créer un script ksh qui permet de se connecter à une base de données oracle et executer des operation sur cette base

    J'ai réussi à me connecter et j'ai stocké ma requete (simple requete pour tester) dans un fichier .sql que je veux que mon script execute

    le probleme c 'est que mon script.ksh n'arrive pas à executer mon .sql

    pour garder des traces j'enregiste le tout dans un fichier journal.txt

    ci après mon code

    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
    #!/usr/bin/ksh
     
    echo""
    echo Saisir le nom de la base de donnees suivi par le nom dutilisateur et le mot de passe
     
    read BaseName UserName PassWord
     
    echo""
    echo La base donnees        : $BaseName
    echo Le nom de lutilisateur : $UserName
    echo le mot de passe        : $PassWord
     
    export PATH_FILE=../log
    export PATH_SQL=../sql
     
    journal=$PATH_FILE/journal.txt
    sql=$PATH_SQL/selection.sql
     
    echo""
     
    sqlplus $UserName/$PassWord @$BaseName>>$journal
    @$PATH_SQL/selection.sql

    après l'execution je tape "exit" pour quitter la connexion et là on m'affiche que le fichier .sql est not found

    et ci après le contenu du fichier journal.txt

    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
    SQL*Plus: Release 8.1.6.0.0 - Production on Thu Jun 19 11:59:23 2008
     
    (c) Copyright 1999 Oracle Corporation.  All rights reserved.
     
     
    Connected to:
    Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.2.0 - Production
     
    SP2-0310: unable to open file "bterec.sql"
     
    Session altered.
     
    [BT_OWNER_14]SQL>Disconnected from Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.2.0 - Production
    bterec c'est le nom de ma base de données

    pouvez vous m'aider? car là je bloque vraiment

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Un script sql n'est pas un exécutable. C'est un ensemble de commandes sql interprétables par ton moteur de requêtes (ici sqlplus).

    Donc faut que tu fasses un truc de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat script.sql |sqlplus <paramètres utiles à sqlplus> |while read ligne
    do
        <traitement de "$ligne">
    done

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Voici une commande qui permet l'execution d'un script PL/SQL en parametre d'entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #!/usr/bin/ksh
     
    USER_NAME= ...
    BSCSDB= ....
    PASSWORD= ....
     
    log_file= "$TRACE/Trace.log"
     
    sqlplus -s << EOF        | tee -a $log_file
    $USER_NAME/$PASSWORD@$BSCSDB

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    j'en profite pour poser une autre question face à un problème bizarre.
    Je met un "exit;" à la fin de mon fichier sql que je veut exécuté à partir d'un shell et là, il me colle une erreur comme quoi il ne peut pas interpréter "exit".

    Je précise que le fichier sql contient un bloc de pl/sql (begin ... end

    une idée ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2008, 15h00
  2. Récupérer erreur sql dans un ksh
    Par jeremy13 dans le forum SQL
    Réponses: 9
    Dernier message: 14/11/2007, 19h11
  3. SQL dans du KSH
    Par jeremy13 dans le forum SQL
    Réponses: 7
    Dernier message: 08/11/2007, 18h52
  4. Réponses: 6
    Dernier message: 08/08/2007, 11h24
  5. [SQL2K][DTS] Comment executer une requete SQL dans un lot DTS
    Par aloisio11 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/05/2007, 17h38

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