Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz dane z pliku XML jako tabelę w 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 )

Produkuje:

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

Uwaga:[1] jest potrzebne, aby wskazać, że chcesz wybrać pierwszą wartość sekwencji, ponieważ zapytanie może zwrócić więcej niż jedną pasującą wartość na wiersz (wyobraź sobie, że Twój XML zawiera kilka identyfikatorów FilterID na SpangemansFilter).

Myślałem, że warto to wiedzieć, więc szukałem w Google i czytałem wiele postów, dopóki nie znalazłem ten.

AKTUALIZUJ Aby załadować z pliku:

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

WYBIERZ @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. VMware CPU Hot Plug vNUMA Wpływ na SQL Server

  2. Jak utworzyć tabelę w SQL Server

  3. Return Select Statement jako sformatowany HTML

  4. nie można znaleźć błędu sterownika podczas używania PDO z serwerem MSSQL

  5. Kopia zapasowa SQL Server 2017 -2