1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 7
    Points : 9
    Points
    9

    Par défaut Convertir un fichier XML en table SQL

    Bonjour à tous,

    Avant toute chose, je suis nouveau sur le forum (ceci est mon tout premier post). Je trouve généralement une solution à mon problème (ce site est très bien fournit, mais la je bloque ..)

    je m'explique :

    J'ai un fichier contenant du code XML, je dois récupérer des données dedans (au niveau des balises) pour l'insérer ensuite dans une table(oracle). Ma contrainte et que je dois le faire en bash et je ne dispose d'aucune interface graphique (j'ai juste un shell à disposition).

    voici un exemple de code XML :

    <recipientslist name="donnée importante à récupérer (notre premier champ)">
    <recipient type="je ne m'en sert pas" nameref="donnée importante à récupérer (notre deuxième champ)"/>
    </recipientslist>
    <recipentslist name="une autre donée à récupérer.." (1er champ)>
    <recipient type="je ne m'en sert pas" nameref="donnée importante à récupérer(notre deuxième champ)"/>
    <recipient type="je ne m'en sert pas" nameref="également présent dans notre deuxième champ, on effectuera alors une concaténation avec le premier du dessus"/>
    [..] il peut y avoir 1-2-x "<recipient type>"
    </recipientslist>
    <recipientslist> [ect...]

    l'idée c'est de formater le fichier xml afin d'obtenir quelque-chose comme un tableau :

    1er champ ; 2em champ
    1er champ ; 2em champ + un autre 2em champ si "recipient type est en plusieurs fois "

    pour formater j'ai pensé à sed , je supprime les deux premières lignes du fichier (header) et vire les espaces :

    >$ cat Fichier_XML | sed -e 's/recipientslist//g;s/<//g;s/\///g;s/>//g;s/recipienttype//g;' |tr -d '[:blank:]'| sed 1,2d > Fichier_XML_Formaté

    ce qui me donne pour le moment :

    name = "donnée champ1"
    nameref="donnée champ2"

    comment puise-je l'insérer dans ma table oracle ? vu que je n'ai aucun séparateur... j'ai pensé à awk mais je ne vois pas trop comment

    merci d'avoir pris le temps de me lire, j'espère avoir été le plus clair possible.. hésitez pas à me contacter si vous m'avez mal compris ou que vous avez une solution

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : juillet 2003
    Messages : 4 005
    Points : 6 276
    Points
    6 276
    Billets dans le blog
    3

    Par défaut

    Bonjour,

    Tu peux le faire de plusieurs façons différentes, tout dépend des accès aux différents serveurs :

    Soit tu gères tout en bash pour créer un fichier .sql que tu exécuteras (Pas besoin d'être sur le serveur de BDD). Mais c'est plutôt côté Unix qu'il faut voir.

    Soit tu crées une table externe sous Oracle et tu génères ton fichier avec un numéro de ligne
    exemple
    1;name;"donnée champ1"
    2;nameref;"donnée champ2"
    3:name;"champ1"

    Soit tu importes directement le fichier XML dans un BLOB Oracle et tu le traites en plsql (ou en sql je suis pas expert en utilisation du package UTL_XML)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 7
    Points : 9
    Points
    9

    Par défaut

    j'ai réussi à tout mettre en forme avec un séparateur de champ ';'
    j'ai ainsi pu utiliser SQL LOADER avec field separator ';'
    merci

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2007
    Messages : 5 545
    Points : 11 363
    Points
    11 363

    Par défaut

    Utilisez Bfile et XmlTable

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

Discussions similaires

  1. Convertir un fichier xml en sql en utilisant toad
    Par sassou1109 dans le forum Toad
    Réponses: 1
    Dernier message: 23/08/2012, 10h51
  2. Import fichier XML dans table Transact SQL
    Par chicken92000 dans le forum Développement
    Réponses: 8
    Dernier message: 17/06/2009, 09h41
  3. Convertir un fichier xml en une table Access
    Par nomade333 dans le forum VBA Access
    Réponses: 10
    Dernier message: 29/03/2008, 19h45
  4. comment convertir un fichier xml en tableau de string (java)
    Par l'indien dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/02/2006, 21h00
  5. convertir un fichier XML en UML
    Par longbeach dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/07/2005, 08h47

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