0

我想将复杂的 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
4

1 回答 1

0

已解决,我可以通过修改上面代码中的 from 子句来查询数据

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

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

于 2019-04-05T08:10:12.603 回答