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

Pilih data dari file XML sebagai tabel di TSQL

set @xmlData='<?xml version="1.0"?>
<ArrayOfSpangemansFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SpangemansFilter>
<FilterID>1219</FilterID>
<Name>Fred</Name>
<Code>510</Code>
<Department>N</Department>
<Number>305327</Number>
</SpangemansFilter>
<SpangemansFilter>
<FilterID>3578</FilterID>
<Name>Gary</Name>
<Code>001</Code>
<Department>B</Department>
<Number>0692690</Number>
</SpangemansFilter>
<SpangemansFilter>
<FilterID>3579</FilterID>
<Name>George</Name>
<Code>001</Code>
<Department>X</Department>
<Number>35933</Number>
</SpangemansFilter>
</ArrayOfSpangemansFilter>'


SELECT 
  ref.value('FilterID[1]', 'int') AS FilterID ,
  ref.value('Name[1]', 'NVARCHAR (10)') AS Name ,
  ref.value('Code[1]', 'NVARCHAR (10)') AS Code ,
  ref.value('Department[1]', 'NVARCHAR (3)') AS Department,
  ref.value('Number[1]', 'int') AS Number      
FROM @xmlData.nodes('/ArrayOfSpangemansFilter/SpangemansFilter') 
xmlData( ref )

Menghasilkan:

FilterID    Name       Code       Department Number
----------- ---------- ---------- ---------- -----------
1219        Fred       510        N          305327
3578        Gary       001        B          692690
3579        George     001        X          35933

Catatan:[1] diperlukan untuk menunjukkan bahwa Anda ingin memilih nilai pertama dari urutan karena kueri dapat mengembalikan lebih dari satu nilai yang cocok per baris (bayangkan XML Anda berisi beberapa FilterID per SpangemansFilter).

Saya pikir ini berguna untuk diketahui, jadi saya mencari di Google dan membaca banyak posting sampai saya menemukan yang ini.

PERBARUI Untuk memuat dari file:

DECLARE @xmlData XML
SET @xmlData = (
  SELECT * FROM OPENROWSET (
    BULK 'C:\yourfile.xml', SINGLE_CLOB
  ) AS xmlData
)

PILIH @xmlData



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan Impor File CSV :Nilai Kolom yang berisi pembatas kolom

  2. Konversi gagal saat mengonversi nilai varchar 'nilai yang dikembalikan saya' ke tipe data menjadi

  3. Ubah kolom, tambahkan batasan default

  4. Bagaimana cara menghindari nilai Duplikat untuk INSERT di SQL?

  5. rumus untuk kolom yang dihitung berdasarkan kolom tabel yang berbeda