Bon j'ai vu beaucoup de sujets mais j'ai pas réussi
Donc je veux bien voir un petit exemple avec oracle (sql) qui prend en entrée un fichier xml et génère des tables relationnelles.
Bon j'ai vu beaucoup de sujets mais j'ai pas réussi
Donc je veux bien voir un petit exemple avec oracle (sql) qui prend en entrée un fichier xml et génère des tables relationnelles.
Tu veux dire,
- prendre n'importe quel XML, et bam, faire des tables relationnelles capables de contenir les mêmes données ?
(=> Ce n'est pas possible, et ceux qui prétendent le faire ne gèrent que des cas très simples et le font très mal. Passer de XML à relationnel nécessite un protocole préétabli ou une compréhension humaine du sujet, case closed.)
OU
- tu cherches un format XML pour définir un schéma de base de données.
(Moi j'en utilise pas, mais ça existe certainement.)
'Faudrait qu'on sache de quoi tu parles.
En faite mon cas est de recevoir un fichier xml "bourré de données".
et je dois l'enregistrer dans des tables préalablement créées .
je crois que ce passage sera fait par des fichiers format XSLT
Oui donc en gros tu as besoin de lire les données d'un fichier XML, d'une part, et les écrire dans une base de données, d'autre part.
Talend est spécialisé dans ce genre de choses, mais je ne suis pas utilisateur moi-même (pas eu l'occasion.)
Autre solution : apprendre à lire les données d'un fichier XML dans le langage de ton choix. Une fois que tu les a lues, tu sais sûrement déjà comment les enregistrer en base de données.
La méthode la "plus simple" PL/SQL, va te demander de creer autant de flux dit de type canonique, que de table cible et oui cela se fera par xslt.
Ensuite tu intégres ceci via procédure stockée.
Une variante, avec un seul flux XML, c'est que tu crée un xml divisé en sous partie canonique , tu sélectionne une à une chaque partie canonique via XPath et tu insére
Soit une table
A | B | C
-------------
1 | | 2
6 | 7 |
7 | 8 | 9
le fichier canonique
un exemple de procédure stockée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <ROWSET> <ROW><A>1</A><C>2</C></ROW> <ROW><A>6</A><B>7</B></ROW> <ROW><A>7</A><B>8</B><C>9</C></ROW> </ROWSET>
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 PROCEDURE xml( p_xml_in XMLType, p_xsl_in XMLType) AS CURSOR c_xml IS SELECT EXTRACTVALUE (VALUE (d), 'sélection de la sous partie en xpath') laligne FROM table (XMLSEQUENCE (EXTRACT (XMLType.transform(p_xml_in, p_xsl_in), '/*/ROWSET'))) d; v_context DBMS_XMLStore.ctxType; v_rows NUMBER; r_xml c_xml%ROWTYPE; BEGIN -- debut de la boucle de parcours des lignes a insérer for r_xml in c_xml loop --ouverture du nouveau contexte v_context := DBMS_XMLSTORE.newContext ('nom de la table cible'); -- insertion du xml v_rows := DBMS_XMLSTORE.insertXML (v_context, r_xml.laLigne); -- fermeture du context DBMS_XMLStore.closeContext(v_context); -- validation de l'insert commit; end loop; -- fin de la boucle sur les tables exception when others then err_code := SQLCODE; err_msg := SQLERRM; insert into ERR_DEBUG values('xml2W', err_code, err_msg); commit; END xml;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager