sql >> Database teknologi >  >> RDS >> Sqlserver

Vælg data fra XML-fil som tabel i 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 )

Producerer:

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

Bemærk:[1] er nødvendig for at angive, at du vil vælge den første værdi af sekvensen, da forespørgslen kan returnere mere end én matchet værdi pr. række (forestil dig, at din XML indeholder flere FilterID'er pr. SpangemansFilter).

Jeg troede, det var nyttigt at vide, så jeg Googlede og læste mange indlæg, indtil jeg fandt denne.

OPDATERING Sådan indlæses fra fil:

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

VÆLG @xmlData



  1. Sjovt med beskeder

  2. CHAR() eller VARCHAR() som primær nøgle i en ISAM MySQL-tabel?

  3. Ugyldigt antal og sum i krydsfaneforespørgsel ved brug af PostgreSQL

  4. MySQL open source-rapporteringstjenester