1
我有几百个来自不同供应商的文件,我从中获取相同的XML格式的数据,并且需要从中导入数据。 我具有能够与(DescriptionDetail)元素的问题OpenXML将xml文件导入到具有元素和属性的sql中
<?xml version="1.0" encoding="UTF-8"?>
<Items>
<Item>
<PartNumber>075050</PartNumber>
<Descriptions>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="DES">Ring Gear Spacer</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="SHO">Spacer</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="INV">Ring Gear Pt </DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="EXT">Gear Spacer</DescriptionDetail>
</Descriptions>
</Item>
<Item>
<PartNumber>1100</PartNumber>
<Descriptions>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="DES">Shim Pack</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="SHO">Shim Pack</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="INV">Chrysler/Dana/Ford/GM</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="EXT">Pinion Shim Pack</DescriptionDetail>
<DescriptionDetail Maintenance="A" LanguageCode="EN" DescriptionCode="MKT"> Win a Gear</DescriptionDetail>
</Descriptions>
</Item>
</Items>
*** SQL代码应用于XML带来
USE XYZCompany
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK '\\SRETDM\Attributes\Frank Gerster\CustXML-Changed\MGPIES-Items.XML', SINGLE_BLOB) AS x;
*** SQL Code used to select the information
USE XYZCompany
GO
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM XMLwithOpenXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT Maintenance,LanguageCode,DescriptionCode,PartNumber,DescriptionDetail
FROM OPENXML(@hDoc, '/Items/Item/Descriptions/DescriptionDetail')
WITH
(
PartNumber [varchar](50) '../../PartNumber',
DescriptionDetail [varchar](50) 'DescriptionDetail',
MaintenanceType [varchar](50) '@MaintenanceType',
LanguageCode [varchar](50) '@LanguageCode',
DescriptionCode [varchar](50) '@DescriptionCode'
)
EXEC sp_xml_removedocument @hDoc
GO
在此先感谢