1
나는이 XML (가독성에 대한 그것의 대부분을 제거)가 반환합니다. 나는 잘못된 기록을 얻는다. CAS_Number
마다 잘못된 화학 이름을 가져 왔습니다. 하나의 CAS_Number
은 하나의 화학 물질을 의미합니다. 하지만 여기에서는 같은 CAS_number
에 대해 서로 다른 화학 이름을 사용합니다.
제 십자가에 적용하는 데 문제가 있지만 그것을 파악할 수 없습니다.
<ArrayOfCatalogItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CatalogItem Version="1">
<Msds xmlns="http://3ecompany.com/webservices/catalogitemxml">
<ProductIdentifiers xmlns="http://3ecompany.com/webservices/catalogitemxml">
<Identifier>M007628</Identifier>
<Source>CPN</Source>
<FirstExportDate xsi:nil="true" />
<LastExportDate xsi:nil="true" />
<FlaggedForResend xsi:nil="true" />
</ProductIdentifiers>
<Ingredients>
<ChemicalName>Hexane</ChemicalName>
<Cas>000110-54-3</Cas>
<AvgPercent>20.000000</AvgPercent>
</Ingredients>
<Ingredients>
<ChemicalName>2-Propanone</ChemicalName>
<Cas>000067-64-1</Cas>
<AvgPercent>20.000000</AvgPercent>
</Ingredients>
<Ingredients>
<ChemicalName>Petroleum gases, liquefied, sweetened</ChemicalName>
<Cas>068476-86-8</Cas>
</Ingredients>
</Msds>
</CatalogItem>
</ArrayOfCatalogItem>
저장 프로 시저는 다음과 같이 진행됩니다
DECLARE @XmlTable TABLE (XMLDATA XML)
INSERT INTO @XmlTable(XMLData)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn
FROM OPENROWSET(BULK 'C:\AA.Sample.File.LUS.Pilly-oneCI.xml', SINGLE_BLOB) AS x;
;WITH XMLNAMESPACES ('http://3ecompany.com/webservices/catalogitemxml' as CI)
SELECT
--CIVersion = CI.value('@Version', 'int'),
Identifier = PID.value('(.)\[1\]', 'varchar(9)'),
Product_Name = MSDSPN.value('(.)\[1\]','varchar(100)'),
CAS_Number = CAS.value('(.)\[1\]', 'varchar(20)'),
Chemical_Name = CN.value('(.)\[1\]', 'varchar(100)')
FROM
@XmlTable
CROSS APPLY
XMLData.nodes('/ArrayOfCatalogItem/CatalogItem') AS XT(CI)
OUTER APPLY
CI.nodes('CI:ProductIdentifiers/CI:Identifier') AS XT2(PID)
CROSS APPLY
CI.nodes('CI:Msds/CI:Ingredients/CI:Cas') AS XT18(CAS)
CROSS APPLY
CI.nodes('CI:Msds/CI:Ingredients/CI:ChemicalName') AS XT19(CN)