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 Oracle Discussion :

SQL*Loader avec xml


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut SQL*Loader avec xml
    Bonjour, Je n'arrive pas à trouver sur le net comment utiliser sql loader avec des fichiers xml en définissant pour chaque balise xml le nom du champs dans la base de donnée est ce que quelqu'un a une idée.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    Bonjour à toi

    à ma connaissance, SQL*Loader ne va te permettre de réaliser cela.

    il va te falloir parser ton document XML et créer un arbre DOM
    ensuite tu récupéres tes noeuds, attributs par des interrogations XPATH dans un type record

    Voici un exemple sur lequel je mettai appuyer il y a plusieurs mois

    ATTENTION : ne fonctionne qu'à partir de la 9i

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    CREATE OR REPLACE PROCEDURE CHARGER_AUDITEURS
    IS
      v_bfile   BFILE;
      v_clob    CLOB;
      v_parser  dbms_xmlparser.Parser;
      v_doc     dbms_xmldom.DOMDocument;
      v_nl      dbms_xmldom.DOMNodeList;
      v_n       dbms_xmldom.DOMNode;
      v_temp    VARCHAR2(1000);
     
      TYPE tab_type IS TABLE OF auditeurs%ROWTYPE;
      t_tab  tab_type := tab_type();
    BEGIN
     
      v_bfile := BFileName('XML_DIR', 'auditeurs.xml');
      DBMS_LOB.createtemporary(v_clob, cache=>FALSE);
      DBMS_LOB.open(v_bfile, dbms_lob.lob_readonly);
      DBMS_LOB.loadFromFile(v_clob,v_bfile,DBMS_LOB.getLength(v_bfile));
      DBMS_LOB.close(v_bfile);
     
      -- make sure implicit date conversions are performed correctly
      DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''DD-MON-YYYY''');
     
      -- Create a parser.
      v_parser := DBMS_XMLPARSER.newParser;
     
      -- Parse the document and create a new DOM document.
      DBMS_XMLPARSER.parseClob(v_parser, v_clob);
      v_doc := DBMS_XMLPARSER.getDocument(v_parser);
     
      -- Free resources associated with the CLOB and Parser now they are no longer needed.
      DBMS_LOB.freetemporary(v_clob);
      DBMS_XMLPARSER.freeParser(v_parser);
     
      -- liste des noeuds
      v_nl := DBMS_XSLPROCESSOR.selectNodes(DBMS_XMLDOM.makeNode(v_doc),'//AuditeurDEF');
     
      -- type record
      FOR cur_auditeur IN 0..DBMS_XMLDOM.getLength(v_nl) - 1 LOOP
        v_n := DBMS_XMLDOM.item(v_nl, cur_auditeur);
     
        t_tab.extend;
     
        -- on utilise la syntaxe XPATH pour affecter les valeurs des éléments
        DBMS_XSLPROCESSOR.valueOf(v_n,'AuditeurID/text()',t_tab(t_tab.last).AuditeurID);
        DBMS_XSLPROCESSOR.valueOf(v_n,'AuditeurNOM/text()',t_tab(t_tab.last).AuditeurNOM);
        DBMS_XSLPROCESSOR.valueOf(v_n,'AuditeurPRENOM/text()',t_tab(t_tab.last).AuditeurPRENOM);
      END LOOP;
     
      FOR cur_auditeur IN t_tab.first .. t_tab.last LOOP
        INSERT INTO AUDITEURS
        VALUES
        (t_tab(cur_auditeur).AuditeurID,
         t_tab(cur_auditeur).AuditeurNOM,
         t_tab(cur_auditeur).AuditeurPRENOM);
      END LOOP;
     
      COMMIT; 
     
      --on libére les ressources associées au document
      DBMS_XMLDOM.freeDocument(v_doc);
     
    EXCEPTION
      WHEN OTHERS THEN
        DBMS_LOB.freetemporary(v_clob);
        DBMS_XMLPARSER.freeParser(v_parser);
        DBMS_XMLDOM.freeDocument(v_doc);
     
    END CHARGER_AUDITEURS;
    en espérant t'avoir aider

    @
    PpPool

Discussions similaires

  1. SQL*Loader avec fichier sans retour chariot
    Par asirier dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 06/03/2013, 11h05
  2. Sql Loader avec condition
    Par fano97one dans le forum PL/SQL
    Réponses: 5
    Dernier message: 15/11/2011, 21h07
  3. Import fichier xml avec sql loader
    Par wil_65 dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 21/04/2009, 16h44
  4. Charger Fichiers XML dans une table avec SQL*LOADER
    Par devdev2003 dans le forum SQL
    Réponses: 2
    Dernier message: 14/01/2008, 10h40
  5. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 12h36

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