sql >> データベース >  >> RDS >> Sqlserver

'xml'を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がファイルにあると仮定すると、このコードを使用してXMLファイルをXMLにロードできます。 SQL Serverの変数:

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

    次に、上記のコードスニペットを使用してXMLを解析します。

    更新#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. ODP.NETを使用した名前によるクエリパラメータのバインド

    2. 地理的に分散したMariaDBクラスターを設計する方法

    3. MariaDBでの全文検索の概要

    4. SQLServerタスク自動化の基本