ओरेकल डेटाबेस कॉलम मैपिंग के लिए एक्सएमएल

मैं एक्सएमएल संदेशों पर काम कर रहा हूं जो हमें मिलता है। मुझे 4 अलग-अलग तालिकाओं में एक्सएमएल और स्टोर पढ़ना है।

इसे संभालने का सबसे अच्छा तरीका क्या है। आइए कहें कि क्या एक्सएमएल स्कीमा बदल गया है, तो नया कॉलम शायद जोड़ा जा सकता है या एक कॉलम शायद गिराया जा सकता है या नाम बदल सकता है ...

हम इस ढीले युग्मन को कैसे बना सकते हैं। एक्सएमएल या डेटाबेस में किए गए किसी भी बदलाव को कोड परिवर्तन की आवश्यकता नहीं है?

धन्यवाद,

0
जोड़ा संपादित
विचारों: 1
@टी हड्डी। हम टिब्को ईएमएस से एक्सएमएल पढ़ते हैं। फिर पहले क्लॉब फ़ील्ड में एक्सएमएल संदेश स्टोर करें। बाद में हम एक्सएमएल को पुनः प्राप्त करते हैं और इसे पार्स करते हैं और एक्सएमएल से मूल्य निकालने और 4 अलग-अलग तालिकाओं में स्टोर करना होता है।
जोड़ा लेखक Naveen Chakravarthy, स्रोत
हम डेटाबेस कॉलम नाम और तालिका नाम के साथ XPath मैपिंग करने की योजना बना रहे हैं। लेकिन सी # में हम विस्तारशीलता कैसे प्राप्त कर सकते हैं जहां एक्सएमएल या डेटाबेस में भविष्य में बदलावों की आवश्यकता नहीं है, कोड कोड नहीं बदलना चाहिए। और भविष्य में हमें अन्य एक्सएमएल प्रदाताओं से विभिन्न एक्सएमएल यानी पार्स करने की आवश्यकता हो सकती है। हम 1 से अधिक प्रदाता से विभिन्न स्कीमा के एक्सएमएल प्राप्त कर सकते हैं।
जोड़ा लेखक Naveen Chakravarthy, स्रोत
डीबी में संग्रहीत करने के बाद आप एक्सएमएल का उपयोग कैसे करते हैं? लेखा परीक्षा उद्देश्यों के लिए बस? क्या आप वास्तव में एक्सएमएल पार्स करते हैं और संबंधपरक रूप से स्टोर करते हैं?
जोड़ा लेखक tbone, स्रोत

2 उत्तर

सुनिश्चित नहीं है कि आप ओरेकल में संग्रहीत एक बार एक्सएमएल का उपयोग कैसे करना चाहते हैं, लेकिन अगर ऑडिटिंग उद्देश्यों के लिए बस स्टोर करना है, तो आप एक सीएलओबी क्षेत्र में एक्सएमएल को संस्करण संख्या और कुछ तिथियों के साथ स्टोर कर सकते हैं। एक अलग संदर्भ तालिका में, xml संस्करण संख्या को इसके डीटी (और निर्मित/संशोधित तिथियों) से संबंधित करें।

0
जोड़ा
हम टिब्को ईएमएस से एक्सएमएल पढ़ते हैं। फिर पहले क्लॉब फ़ील्ड में एक्सएमएल संदेश स्टोर करें। बाद में हम एक्सएमएल को पुनः प्राप्त करते हैं और इसे पार्स करते हैं और एक्सएमएल से मूल्य निकालने और 4 अलग-अलग तालिकाओं में स्टोर करना होता है।
जोड़ा लेखक Naveen Chakravarthy, स्रोत

यदि आप ओरेकल 11 जी का उपयोग कर रहे हैं तो आप XMLTYPE चर बना सकते हैं पीएल/एसक्यूएल प्रक्रिया में और फिर आप निकालने() फ़ंक्शन का उपयोग कर सकते हैं केवल xml दस्तावेज़ के उन हिस्सों को पुनर्प्राप्त करें जिन्हें आप फ़ील्ड बनाना चाहते हैं।

XMLTYPE प्रकार के पीएल/एसक्यूएल चर घोषित करने के बाद, XMLTYPE चर बनाने के लिए XMLTYPE.CREATEXML() फ़ंक्शन का उपयोग करें।

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

निकालें() पीएल/एसक्यूएल फ़ंक्शन एक XMLTYPE देता है और मेरे पास है एक XMLTYPE को VARCHAR में परिवर्तित करने के लिए getclobval() का उपयोग किया जाता है।

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

कम से कम इसके साथ, आपको केवल अपने पीएल/एसक्यूएल को बदलना होगा यदि उन फ़ील्ड का पथ जिन्हें आप बदल रहे हैं; में परिवर्तन फ़ील्ड के बाहर xml दस्तावेज़ (जब तक वे नहीं करते हैं क्षेत्रों में XPATH को प्रभावित करें) में परिवर्तन की आवश्यकता नहीं होनी चाहिए PL/SQL ..

0
जोड़ा
@ ए बी वर्तमान में हमारे डेटाबेस 10 जी है। 11 जी के लिए योजना है लेकिन यह सुनिश्चित नहीं है कि यह कब होगा। हम ओरेकल एक्सएमएल विशेषताओं की बजाय सी # (LINQ से XML) में पार्सिंग करने की योजना बना रहे हैं।
जोड़ा लेखक Naveen Chakravarthy, स्रोत