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

SQL*Loader Oracle Discussion :

Sql*Loader sous Unix


Sujet :

SQL*Loader Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut Sql*Loader sous Unix
    Bonjour,

    J'ai écrit un sql*loader pour charger un fichier XML.

    J'ai un script Unix qui appelle mon .ctl. Mais comme mon fichier en entrée est un XML, j'ai un STR qui vient avec. D'autre part mon sql*loder est lancé par un programme. Mon problème est de passer mon STR au INFLE du point ctl tout en ayant un chemin dynamique.

    Détails :

    1) Le point CTL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    LOAD DATA   INFILE "/v0/tsx/dat/fic/Essai_Xml.xml" "str '</ROW>'"   
    REPLACE INTO TABLE REGISTRE
    TRAILING NULLCOLS
    (
        DUMMY Filler terminated by "<ROW>",
        ID_DOSSIER enclosed by "<ID_DOSSIER>" and "</ID_DOSSIER>",
        NOM        enclosed by "<NOM>" and "</NOM>",
        PRENOM     enclosed by "<PRENOM>" and "</PRENOM>"
    )
    Ce code marche correctement. Il se trouve seulement que j'ai mon chemin en dur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/v0/tsx/dat/fic/Essai_Xml.xml"
    alors que dans mon Unix, il est dynamique.

    2) Unix

    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
    #!/bin/ksh
     
    Appl_log $ORACLE_SID $0 "I" "Début de Test_Xml"
     
    m0="Chargement dans xml les informations reçues."
     
    prg=test_xml.ctl 
    load=test_xml.log ; touch ${load}
    bad=test_xml.bad ; touch ${bad}
    dsc=test_xml.dsc ; touch ${dsc}
     
    fic=$fic_home/Essai_Xml.xml
     
    m0=`echo ${m0} ${prg} ${load} ${bad} ${dsc}`
     
    Appl_log $ORACLE_SID $0 "I" "Début ${m0}" 
     
    $UTL_EXE/utl850u3 control=${prg} log=${load}  bad=${bad} discard=${dsc}
    Dans mon Unix, le lance mon sqlldr et lui transmet les paramètres.
    Il reçoit entre autres le "fic" où le $fic_home varie selon les environnements. (DEV, TST, PORD).

    D'autre part le prg reçoit mon .CTL dans lequel je dois lui faire passer le STR.

    Autrement dit, lorsque j'exécute mon qui est le sqlldr, il prend le control file qui est . Ce dernier est mon point CTL. Seulement, comment je spécificie dans ce .CTL que mon chemin du INFILE doit être $fic_home et en plus d'avoir le Si j'arrive, je n'ai plus besoin du DATA dans sqlldr.

    Ceci relève plutôt d'unix que sqlldr mais je me disais quand le plançant au forum Unix, ils ne connaîtraient pas les subtilités de Sqlldr.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut
    L'énnoncé était un peu compliqué peut-être. J'ai trouvé la solution.

    Dans mon .CTL, mon premier argument qui est mon chemin vers mon fichier Xml, est une variable comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA  INFILE  "fic"  "str '</ROW>'"
    Ensuite dans mon Unix, fic reçoit mon chemin vers mon fichier comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fic=$fic_home/Test_Xml.xml
    J'exécute mon sqlldr à l'intérieur de mon Unix en lui passant les paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    control=${prg} log=${load} data=${fic} bad=${bad} discard=${dsc}

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

Discussions similaires

  1. Utilitaire SQL*Loader sous Oracle
    Par mo9rissat dans le forum Import/Export
    Réponses: 1
    Dernier message: 22/03/2012, 16h52
  2. requete sql sous unix
    Par Commandeur dans le forum Unix
    Réponses: 2
    Dernier message: 27/08/2008, 08h48
  3. Chargement de données sous Oracle avec sql loader
    Par yayamo dans le forum SQL*Loader
    Réponses: 4
    Dernier message: 07/08/2008, 15h40
  4. Réponses: 1
    Dernier message: 07/04/2008, 11h23
  5. SQL Loader sous MySQL
    Par nicocolt dans le forum SQL Procédural
    Réponses: 15
    Dernier message: 07/07/2006, 15h52

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