Извлечение данных XML в таблицу SQL с использованием T-SQL - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу извлечь сложные данные XML на сервер SQL.Уже попробовал пакет SSIS безуспешно.Что я могу изменить в своем коде на желаемый вывод

Я пробовал ниже T-SQL

DECLARE @xmlData XML
SET @xmlData = (
  SELECT CONVERT(XML, BulkColumn) AS BulkColumn 
FROM OPENROWSET(BULK 'C:..\NewTextDocument.xml', SINGLE_BLOB) as x
  ) 

SELECT 
  ref.value('FilterID[1]', 'int') AS FilterID ,
  ref.value('Name[1]', 'NVARCHAR (255)') AS Name ,
  ref.value('Code[1]', 'NVARCHAR (255)') AS Code ,
  ref.value('Department[1]', 'NVARCHAR (255)') AS Department     
FROM @xmlData.nodes('DataSet/Export/Test') 
xmlData( ref )

Мой XML имеет формат ниже

<?xml version="1.0" encoding="ISO-8859-1"?>
<DataSet>
<xs:schema id="Export" xmlns:msdata="urn:schemas-microsoft-com:xml- 
msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="">
<xs:element msdata:Locale="" msdata:IsDataSet="true" name="Export">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="Test">
<xs:complexType>
<xs:sequence>
<xs:element name="FilterID" minOccurs="0" type="xs:int"/>
<xs:element name="Name" minOccurs="0" type="xs:string"/>
<xs:element name="Code" minOccurs="0" type="xs:string"/>
<xs:element name="Department" minOccurs="0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

<Export>
<Test diffgr:id="Test1" msdata:rowOrder="0">
<FilterID>1</FilterID>
<Name>John</Name>
<Code>123</Code>
<Department>Science</Department>
</Test>

<Test diffgr:id="Test2" msdata:rowOrder="1">
<FilterID>2</FilterID>
<Name>Jay</Name>
<Code>321</Code>
<Department>Maths</Department>
</Test>
</Export>

Ожидаемый вывод

FilterID | Name | Code | Department
------------------------------------
1        | John | 123  | Science
2        | Jay  | 321  | Maths

1 Ответ

0 голосов
/ 05 апреля 2019

Решено, я смог запросить данные, изменив условие из приведенного выше кода

FROM @ xmlData.nodes ('DataSet / Export / Test')

в FROM @ xmlData.nodes ('// Export / Test')

...