কম্পিউটার

PL/SQL-এ XML পার্স করুন

এই ব্লগটি Oracle® PL/SQL-এ XML ডেটা পরিচালনার জন্য কয়েকটি পদ্ধতির অন্বেষণ করে। আমাদের ডাটাবেস পরিষেবাগুলি সম্পর্কে আরও জানুন৷

আপনি যদি একটি XML ফাইল থেকে XML ডেটাকে Oracle PL/SQL সারি এবং কলামে রূপান্তর করতে চান তবে নিম্নলিখিত বিকল্পগুলি উপলব্ধ:

  • এক্সএমএল ফাইলটি একটি XML টেবিলে লোড করুন এবং তারপরে এটি পার্স করুন।
  • একটি XML টেবিলে লোড না করে সরাসরি XML ফাইলটি পার্স করুন৷

একটি ওরাকল টেবিলে XML ডেটা লোড করতে, SQLLOADER এর মতো বিকল্পগুলি ব্যবহার করুন ,utl_file , অথবা XML CLOB . আপনি একটি টেবিলে ডেটা লোড করার পরে, আপনাকে প্রতিটি XML ট্যাগ থেকে মান বের করতে হবে। XML ডেটা বের করতে, Oracle দ্বারা প্রদত্ত বিল্ট-ফাংশনগুলি ব্যবহার করুন, যেমন XMLELEMENT , XMLAGG , XMLTABLE ,XMLSEQUENCE , এবং EXTRACTVALUE .

ব্যবহৃত প্রধান বিল্ট-ইন ফাংশন হল EXTRACT , যা নিম্নলিখিত ছবিতে দেখানো হয়েছে:

PL/SQL-এ XML পার্স করুন

ছবির উৎস :https://docs.oracle.com/cd/B19306_01/server.102/b14200/img/extract_xml.gif

উদাহরণ ফাইল

এই বিকল্পগুলি বিস্তারিতভাবে অন্বেষণ করতে, এই পোস্টের উদাহরণটি ফাইল ব্যবহার করে, Test.xml . ডাটাবেসের ফাইলটি অ্যাক্সেস করতে, DBA ব্যবহার করুন ডিরেক্টরি, যা ওরাকেলে সংজ্ঞায়িত করা হয়েছে। উদাহরণগুলি XX_UTL_DIR ব্যবহার করে৷ রেফারেন্স ডিরেক্টরি হিসাবে। আপনি পরিবর্তে আপনার নিজের পছন্দের ডিরেক্টরি ব্যবহার করতে পারেন৷

Test.xml নিম্নলিখিত বিষয়বস্তু আছে:

<?xml version = '1.0' encoding = 'UTF-8'?>
<UANotification xmlns="https://www.test.com/UANotification">
    <NotificationHeader>
    <Property name="ErrorMessage" value="User Data Invalid"/>
            <Property name="SPSDocumentKey" value="11111111111"/>
            <Property name="AppKey" value="22222222"/>
            <Property name="FileName" value="SH201701181418.61W"/>
            <Property name="SenderName" value="Test"/>
            <Property name="ReceiverName" value="Integrated Supply Network"/>
            <Property name="DocumentType" value="856"/>
            <Property name="SourceDataType" value="XML"/>
            <Property name="DestinationDataType" value="FEDS"/>
            <Property name="XtencilNet" value="shFedsWrite"/>
            <Property name="PreviousMaps" value="shFedsWrite]"/>
    </NotificationHeader>
    <FINotification xmlns="https://www.test.com/fileIntegration">
            <ServiceResult>
                    <DataError>
                            <Message>Invalid data test 1</Message>
                    </DataError>
                    <DataError>
                            <Message>Invalid data test 2</Message>
                    </DataError>
            </ServiceResult>
    </FINotification>
</UANotification>

প্রথম পদ্ধতি:XML ফাইলটিকে একটি XML টেবিলে লোড করুন এবং তারপর পার্স করুন

প্রথমে, ওরাকেলে একটি টেবিল তৈরি করুন যাতে ডেটা টাইপ XMLTYPE সহ একটি কলাম অন্তর্ভুক্ত থাকে .

উদাহরণস্বরূপ, টেবিল তৈরি করতে নিম্নলিখিত কোড ব্যবহার করুন:

CREATE TABLE xml_tab (
  File_name  varchar2(100),
  xml_data  XMLTYPE
);

এরপর, Test.xml থেকে ডেটা সন্নিবেশ করুন xml.tab-এ নিম্নলিখিত কমান্ড ব্যবহার করে:.

INSERT INTO xml_tab
VALUES ( ‘Test.xml’,
XMLTYPE (BFILENAME ('XX_UTL_DIR', ‘Test.xml’),
NLS_CHARSET_ID ('AL32UTF8')
));

পূর্ববর্তী INSERT বিবৃতি Test.xml ফাইলের ডেটা সন্নিবেশ করে xml_data ক্ষেত্রের মধ্যে টেবিলের xml_tab . INSERT সম্পূর্ণ হওয়ার পরে, XMLডেটা সারণিতে পাওয়া যায় xml_tab . একটি SELECT ক্যোয়ারীতে ডেটা পড়তে, পরবর্তীতে বর্ণিত SELECT স্টেটমেন্টগুলি ব্যবহার করুন৷

ট্যাগের পাঠ্য পড়তে Message যেটি প্যারেন্ট ট্যাগDataError এর অধীনে উপলব্ধ , নিম্নলিখিত SQL কমান্ড ব্যবহার করুন:

SELECT EXTRACT (VALUE (a1),
            '/DataError/Message/text()',
            'xmlns="https://www.test.com/fileIntegration')
      msg
 FROM xml_tab,
   TABLE (
      XMLSEQUENCE (
         EXTRACT (
            xml_data,
            '/UANotification/ns2:FINotification/ns2:ServiceResult/ns2:DataError',
            'xmlns="https://www.test.com/UANotification" xmlns:ns2="https://www.test.com/fileIntegration"'))) a1
WHERE file_name = 'Test.xml';

property name পড়তে এবং এর মান, নিম্নলিখিত SQL কমান্ড ব্যবহার করুন:

SELECT EXTRACTVALUE (VALUE (a1),
                 '/Property/@name',
                 'xmlns="https://www.test.com/UANotification')
      attribute,
   EXTRACTVALUE (VALUE (a1),
                 '/Property/@value',
                 'xmlns="https://www.test.com/UANotification')
      VALUE
 FROM xml_tab,
   TABLE (
      XMLSEQUENCE (
         EXTRACT (
            xml_data,
            '/UANotification/NotificationHeader/Property',
            'xmlns="https://www.test.com/UANotification" xmlns:ns2="https://www.test.com/fileIntegration"'))) a1
 WHERE file_name = 'Test.xml';

দ্বিতীয় পদ্ধতি:XML ফাইলটিকে একটি XML টেবিলে লোড না করে সরাসরি পার্স করুন

আপনি যদি সরাসরি Test.xml পার্স করতে চান Oracletable-এ লোড না করে, তাহলে আপনি নিম্নলিখিত SELECT স্টেটমেন্ট ব্যবহার করতে পারেন:

SELECT EXTRACTvalue (VALUE (a1),
            '/Property/@name',
            'xmlns="https://www.test.com/UANotification') attribute,
             EXTRACTvalue (VALUE (a1),
            '/Property/@value',
            'xmlns="https://www.test.com/UANotification') value
 FROM
   TABLE (
      XMLSEQUENCE (
         EXTRACT (
            xmltype(BFILENAME ('XX_UTL_DIR', 'Test.xml'),NLS_CHARSET_ID ('AL32UTF8')),
            '/UANotification/NotificationHeader/Property',
            'xmlns="https://www.test.com/UANotification" xmlns:ns2="https://www.test.com/fileIntegration"'))) a1

র্যাপ আপ

এই পোস্টে বর্ণিত XML ডেটা পার্স করার উভয় পদ্ধতিই আপনাকে একই চূড়ান্ত আউটপুট দেয়। প্রথম পদ্ধতিটি একটি তিন-পদক্ষেপ প্রক্রিয়া, যার জন্য কোডের নিম্নলিখিত অংশগুলির প্রয়োজন:

  1. ওরাকল টেবিল তৈরি করুন।
  2. তৈরি করা টেবিলে XML ফাইলের ডেটা ঢোকান।
  3. টেবিল থেকে মান বের করতে একটি SELECT স্টেটমেন্ট লিখুন।

দ্বিতীয় বিকল্পটি হল একটি একক-পদক্ষেপ প্রক্রিয়া যেখানে আপনি একটি SELECT স্টেটমেন্ট লিখবেন এবং পছন্দসই ফলাফল পাবেন।

উপসংহার

যেকোন একটি বিকল্প কাজ করে, কিন্তু যদি আপনাকে ভবিষ্যতের রেফারেন্সের জন্য ওরাকল-এ XML ফাইল সংরক্ষণ করতে হয়, তাহলে আপনার প্রথম পদ্ধতিটি ব্যবহার করা উচিত কারণ ডেটা ভবিষ্যতের রেফারেন্সের জন্য টেবিলে টিকে থাকে এবং আপনি যে কোনো সময় এটি অ্যাক্সেস করতে পারেন।

দ্বিতীয় পদ্ধতিটি বেছে নিয়ে, আপনি সরাসরি ডেটা পার্স করতে পারেন। যাইহোক, এই বিকল্পের সাথে, আসল XML ফাইল ডেটা ভবিষ্যতে অ্যাক্সেস করা যাবে না কারণ এই বিকল্পটি কখনই ওরাকল-এ XML ফাইলের সামগ্রী সংরক্ষণ করে না।

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাবটি ব্যবহার করুন৷

বিশেষজ্ঞ প্রশাসন, ব্যবস্থাপনা এবং কনফিগারেশনের মাধ্যমে আপনার পরিবেশকে অপ্টিমাইজ করুন

Rackspace এর অ্যাপ্লিকেশন পরিষেবা(RAS) বিশেষজ্ঞরা অ্যাপ্লিকেশনগুলির বিস্তৃত পোর্টফোলিও জুড়ে নিম্নলিখিত পেশাদার এবং পরিচালিত পরিষেবাগুলি প্রদান করে:

  • ইকমার্স এবং ডিজিটাল অভিজ্ঞতার প্ল্যাটফর্ম
  • এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
  • ব্যবসায়িক বুদ্ধিমত্তা
  • সেলসফোর্স কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
  • ডাটাবেস
  • ইমেল হোস্টিং এবং উৎপাদনশীলতা

আমরা সরবরাহ করি:

  • নিরপেক্ষ দক্ষতা :আমরা আপনার আধুনিকীকরণের যাত্রাকে সহজ করে দিই এবং নির্দেশিকা দিই, এমন ক্ষমতার উপর ফোকাস করে যা তাৎক্ষণিক মূল্য প্রদান করে।
  • ধর্মান্ধ অভিজ্ঞতা™ :আমরা প্রথমে একটি প্রক্রিয়া একত্রিত করি। প্রযুক্তি দ্বিতীয়। ব্যাপক সমাধান প্রদানের জন্য নিবেদিত প্রযুক্তিগত সহায়তা সহ পদ্ধতি।
  • অপ্রতিদ্বন্দ্বী পোর্টফোলিও :আমরা আপনাকে সঠিক ক্লাউডে সঠিক প্রযুক্তি বাছাই এবং স্থাপনে সহায়তা করার জন্য ব্যাপক ক্লাউড অভিজ্ঞতা প্রয়োগ করি।
  • চটপট ডেলিভারি :আপনি আপনার যাত্রায় যেখানে আছেন সেখানে আমরা আপনার সাথে দেখা করি এবং আপনার সাথে সাফল্যকে সারিবদ্ধ করি।

শুরু করতে এখনই চ্যাট করুন।


  1. স্ট্রেচ ডেটাবেস—একটি বোঝাপড়া পান

  2. ইউনিফাইড ডেটা প্ল্যাটফর্ম:SQL সার্ভার 2019

  3. এসকিউএল কোয়ারেন্টাইন

  4. আপনার SQL ডেটাতে ইলাস্টিক সার্চ-চালিত অনুসন্ধান এবং ভিজ্যুয়ালাইজেশন যোগ করুন