Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Impor 'xml' ke dalam Sql Server

Coba ini:

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)

Memberi saya output dari:

Dan tentu saja, Anda dapat dengan mudah melakukan

INSERT INTO dbo.YourTable(EventUID, EventType, EventIsFixed, EventKind)
   SELECT 
         ......

untuk memasukkan data tersebut ke dalam tabel relasional.

Pembaruan: dengan asumsi Anda memiliki file XML - Anda dapat menggunakan kode ini untuk memuat file XML ke dalam XML variabel di SQL Server:

DECLARE @XmlFile XML

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

dan kemudian gunakan cuplikan kode di atas untuk mengurai XML.

Pembaruan #2: jika Anda membutuhkan parameter juga - gunakan pernyataan XQuery ini:

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)

Hasil dalam:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengenal Beban Kerja SQL Server Anda

  2. Mengapa kueri Microsoft SQL Server 2012 membutuhkan waktu beberapa menit dari JDBC 4.0 tetapi detik di Management Studio?

  3. Bagaimana cara melihat konten lengkap kolom teks atau varchar(MAX) di SQL Server 2008 Management Studio?

  4. Tiga tabel bergabung dengan gabungan selain INNER JOIN

  5. Kesalahan:Penyedia TCP:Kode kesalahan 0x2746. Selama pengaturan Sql di linux melalui terminal