XML pentru maparea coloanelor bazei de date Oracle

Lucrez la mesajele xml pe care le primim. Trebuie să citesc xml și să stochez în 4 tabele diferite.

Care este cel mai bun mod de a trata acest lucru. Să spunem dacă schema xml este schimbată, atunci poate fi adăugată o nouă coloană sau o coloană poate fi abandonată sau redenumită etc.

Cum putem face această cuplare liberă. Orice modificări aduse xml sau bazei de date nu necesită schimbarea codului?

Mulțumiri,

0
@os în formă de T. Am citit xml de la Tibco EMS. Apoi salvați mai întâi mesajul xml într-un câmp clobot. Mai târziu, preluăm xml și analizăm-l și trebuie să extragem valori din xml și să stocăm în 4 tabele diferite.
adăugat autor Naveen Chakravarthy, sursa
Planificăm să realizăm maparea XPath cu numele coloanei bazei de date și numele tabelului. Dar în C# cum putem realiza extensibilitatea în cazul în care schimbările viitoare ale xml sau ale bazei de date nu necesită modificarea codului. Și, de asemenea, în viitor ar putea fi necesar să analizăm diferite XML, adică de la alți furnizori XML. S-ar putea să obținem xml de schemă diferită de la mai mult de un furnizor.
adăugat autor Naveen Chakravarthy, sursa
cum folosiți xml după ce este stocat în db? Pur și simplu pentru scopuri de audit? Chiar parsezi xml și păstrezi relațional?
adăugat autor tbone, sursa

2 răspunsuri

Nu sunteți sigur cum intenționați să utilizați xml după ce ați stocat în Oracle, dar dacă stocați doar pentru scopuri de audit, puteți stoca xml într-un câmp CLOB împreună cu un număr de versiune și câteva date. Într-un tabel de referință separat, legați numărul versiunii xml cu datele sale dtd (și datele create/modificate).

0
adăugat
Am citit xml de la Tibco EMS. Apoi salvați mai întâi mesajul xml într-un câmp clobot. Mai târziu, preluăm xml și analizăm-l și trebuie să extragem valori din xml și să stocăm în 4 tabele diferite.
adăugat autor Naveen Chakravarthy, sursa

Dacă utilizați Oracle 11G puteți crea variabile XMLTYPE într-o procedură PL/SQL și apoi puteți utiliza funcția extract () preluați numai părțile din documentul xml pe care doriți să fiți câmpuri.

După declararea unei variabile PL/SQL de tip XMLTYPE, utilizați funcția XMLTYPE.CREATEXML() pentru a crea o variabilă XMLTYPE.

V_INPUT_XML  := XMLTYPE.CREATEXML(V_TAB.INPUT_MESSAGE);

Funcția PL/SQL extrage() returnează un XMLTYPE și am a folosit getclobval() pentru a converti un XMLTYPE la un VARCHAR.

--V_OUTPUT_XML is set by a result of the extract() function 
--on an XMLTYPE
V_OUTPUT_STR := v_output_xml.getclobval();

Cel puțin cu acest lucru, trebuie doar să vă modificați PL/SQL în cazul în care calea către câmpurile pe care le setați modificări; modificări la Documentul xml în afara câmpurilor (atâta timp cât nu au afectează XPATH la câmpuri) nu ar trebui să necesite modificări la PL/SQL ..

0
adăugat
@ A B în prezent baza noastră de date este de 10g. Planificând pentru 11g dar nu sigur când se va întâmpla asta. Planificăm să realizăm parsarea în C# (LINQ în XML) în loc de caracteristicile Oracle XML.
adăugat autor Naveen Chakravarthy, sursa