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

एसक्यूएल सर्वर में 'एक्सएमएल' आयात करें

इसे आजमाएं:

DECLARE @XML XML = '<EventSchedule>
    <Event Uid="2" Type="Main Event">
        <IsFixed>True</IsFixed>
        <EventKind>MainEvent</EventKind>
        <Fields>
            <Parameter Name="Type" Value="TV_Show"/>
            <Parameter Name="Name" Value="The Muppets"/>
            <Parameter Name="Duration" Value="00:30:00"/>
        </Fields>
    </Event>
    <Event Uid="3" Type="Secondary Event">
        <IsFixed>True</IsFixed>
        <EventKind>SecondaryEvent</EventKind>
        <Fields>
            <Parameter Name="Type" Value="TV_Show"/>
            <Parameter Name="Name" Value="The Muppets II"/>
            <Parameter Name="Duration" Value="00:30:00"/>
        </Fields>
    </Event>
</EventSchedule>'

SELECT
    EventUID = Events.value('@Uid', 'int'),
    EventType = Events.value('@Type', 'varchar(20)'),
    EventIsFixed =Events.value('(IsFixed)[1]', 'varchar(20)'),
    EventKind =Events.value('(EventKind)[1]', 'varchar(20)')
FROM
 @XML.nodes('/EventSchedule/Event') AS XTbl(Events)

मुझे इसका आउटपुट देता है:

और हां, आप आसानी से एक

. कर सकते हैं
INSERT INTO dbo.YourTable(EventUID, EventType, EventIsFixed, EventKind)
   SELECT 
         ......

उस डेटा को एक रिलेशनल टेबल में डालने के लिए।

अपडेट करें: यह मानते हुए कि आपके पास फाइलों में एक्सएमएल है - आप एक्सएमएल फाइल को XML में लोड करने के लिए इस कोड का उपयोग कर सकते हैं SQL सर्वर में वेरिएबल:

DECLARE @XmlFile XML

SELECT @XmlFile = BulkColumn
FROM  OPENROWSET(BULK 'path-to-your-XML-file', SINGLE_BLOB) x;

और फिर एक्सएमएल को पार्स करने के लिए उपरोक्त कोड स्निपेट का उपयोग करें।

अपडेट #2: यदि आपको पैरामीटर की भी आवश्यकता है - इस XQuery कथन का उपयोग करें:

SELECT
    EventUID = Events.value('@Uid', 'int'),
    EventType = Events.value('@Type', 'varchar(20)'),
    EventIsFixed = Events.value('(IsFixed)[1]', 'varchar(20)'),
    EventKind = Events.value('(EventKind)[1]', 'varchar(20)'),
    ParameterType = Events.value('(Fields/Parameter[@Name="Type"]/@Value)[1]', 'varchar(20)'),
    ParameterName = Events.value('(Fields/Parameter[@Name="Name"]/@Value)[1]', 'varchar(20)'),
    ParameterDuration = Events.value('(Fields/Parameter[@Name="Duration"]/@Value)[1]', 'varchar(20)')
FROM
    @XML.nodes('/EventSchedule/Event') AS XTbl(Events)

इसमें परिणाम:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉमन टेबल एक्सप्रेशन (CTE) का उपयोग कब करें

  2. प्रोग्रामेटिक रूप से SQL सर्वर कनेक्शन का परीक्षण करने का सबसे अच्छा तरीका क्या है?

  3. दशमलव समय को घंटे और मिनट में बदलें

  4. एक विशिष्ट मान SQL सर्वर के लिए सभी टेबल, सभी कॉलम खोजें

  5. सी # में बिगिंट के बराबर क्या है?