Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

XML से CLOB के अंदर, Oracle तालिका में पथों की सूची के साथ

यूपीडी मुझे काफी बड़ी एक्सएमएल फाइल (140 केबी) मिली। मेरा सिस्टम:कोर i5 प्रोसेसर (2400 मेगाहर्ट्ज) के साथ नोटबुक, वर्चुअल मशीन के अंदर ऑरैकल 12c, प्रोसेस करने का समय - 0.38 सेकेंड। यह विधि एकमात्र विकल्प है जिसे मैं जानता हूं। xml का उदाहरण यहाँ मैंने w3schools.com पर पाया।

declare
  xml_str clob := q'[<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
 <CD>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Columbia</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
 </CD>
 <CD>
  <TITLE>Hide your heart</TITLE>
  <ARTIST>Bonnie Tyler</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>CBS Records</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
 </CD>
</CATALOG>]';

v_doc  dbms_xmldom.domdocument;
node   dbms_xmldom.domnode;
txt    varchar2(4000);
type   t_list is table of number index by varchar2(4000);
v_list t_list;
  procedure enum_nodes(n dbms_xmldom.domnode, tag_name varchar2) is
    chn  dbms_xmldom.domnode;
    nl   dbms_xmldom.domnodelist;
  begin
    nl := dbms_xmldom.getchildnodes(n);
    for i in 0..dbms_xmldom.getlength(nl) loop
      chn := dbms_xmldom.item(nl, i);

      if dbms_xmldom.getnodetype(chn) = 1 then
         enum_nodes(chn, tag_name || dbms_xmldom.getnodeName(chn) || '/');
      elsif dbms_xmldom.getnodetype(chn) = 3 then
         v_list(tag_name || dbms_xmldom.getnodevalue(chn)) := 1;
      end if;
    end loop;
  end;
begin
  v_doc := dbms_xmldom.newdomdocument(xml_str);
  node := dbms_xmldom.makenode(v_doc);

  enum_nodes(node, '/');

  txt := v_list.first;
  while txt is not null loop
     dbms_output.put_line(txt);
     txt := v_list.next(txt);
  end loop;
end;
/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle इन-मेमोरी कॉस्ट

  2. संकलन त्रुटियों के साथ Oracle ट्रिगर निर्माण, ORA-02289:अनुक्रम मौजूद नहीं है

  3. सीम @ ट्रांसेक्शनल एनोटेशन काम नहीं कर रहा है?

  4. डीप नेस्टेड सबक्वेरी फैक्टरिंग (CTE) के लिए धीमा प्रदर्शन

  5. Oracle अधिकतम रिकॉर्ड प्राप्त करने के लिए