因此,我有一个包含订单的XML文件,为此我正在使用Data Flow Task
以便提取信息并将其插入MSSQL
中的某些表中。到目前为止,一切都很好。但是,有一些信息我无法使用此方法,为此,我需要使用XML Task
:
但是,我想提取几个信息,而不仅仅是一个字段。我该如何实现并将其进一步用于将它们插入表中?我的XML
看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UBLVersionID>2.1</UBLVersionID>
<CustomizationID>ver2.0</CustomizationID>
<ProfileID>RO11588780_RO13965909</ProfileID>
<ID>00680733</ID>
<CopyIndicator>true</CopyIndicator>
<UUID>DX01_144_20181119_01006030</UUID>
<IssueDate>2018-11-19</IssueDate>
<OrderTypeCode>220</OrderTypeCode>
<Note>STOCAJ</Note>
<AccountingCostCode>32</AccountingCostCode>
<LineCountNumeric>16</LineCountNumeric>
<RequestedDeliveryPeriod>
<StartDate>2018-11-23</StartDate>
<EndDate>2018-11-23</EndDate>
<Description/>
</RequestedDeliveryPeriod>
<BuyerCustomerParty>
<ID>233</ID>
<Price CurrencyID="RON">
<Amount>40.85</Amount>
</Price>
<Quantity UnitCode="PCE">
<Amount>2</Amount>
</Quantity>
<Item>
<Description>HARRY POTTER 7</Description>
<PackQuantity>1</PackQuantity>
<PackSizeNumeric>2</PackSizeNumeric>
<BuyersItemIdentification>32527676</BuyersItemIdentification>
<StandardItemIdentification>9786067884159</StandardItemIdentification>
</Item>
</OrderLine>
<OrderLine>
<ID>234</ID>
<Price CurrencyID="RON">
<Amount>20.61</Amount>
</Price>
<Quantity UnitCode="PCE">
<Amount>2</Amount>
</Quantity>
<Item>
<Description>ARCUL DE ARAMA</Description>
<PackQuantity>1</PackQuantity>
<PackSizeNumeric>2</PackSizeNumeric>
<BuyersItemIdentification>32527677</BuyersItemIdentification>
<StandardItemIdentification>9786068811574</StandardItemIdentification>
</Item>
</OrderLine>
</Order>
答案 0 :(得分:0)
首先,我将您的xml文件更改为(Sql服务器在抱怨标记..):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UBLVersionID>2.1</UBLVersionID>
<CustomizationID>ver2.0</CustomizationID>
<ProfileID>RO11588780_RO13965909</ProfileID>
<ID>00680733</ID>
<CopyIndicator>true</CopyIndicator>
<UUID>DX01_144_20181119_01006030</UUID>
<IssueDate>2018-11-19</IssueDate>
<OrderTypeCode>220</OrderTypeCode>
<Note>STOCAJ</Note>
<AccountingCostCode>32</AccountingCostCode>
<LineCountNumeric>16</LineCountNumeric>
<RequestedDeliveryPeriod>
<StartDate>2018-11-23</StartDate>
<EndDate>2018-11-23</EndDate>
<Description></Description>
</RequestedDeliveryPeriod>
<BuyerCustomerParty>
<ID>233</ID>
<Price CurrencyID="RON">
<Amount>40.85</Amount>
</Price>
<Quantity UnitCode="PCE">
<Amount>2</Amount>
</Quantity>
<Item>
<Description>HARRY POTTER 7</Description>
<PackQuantity>1</PackQuantity>
<PackSizeNumeric>2</PackSizeNumeric>
<BuyersItemIdentification>32527676</BuyersItemIdentification>
<StandardItemIdentification>9786067884159</StandardItemIdentification>
</Item>
<OrderLine>
</OrderLine>
<ID>234</ID>
<Price CurrencyID="RON">
<Amount>20.61</Amount>
</Price>
<Quantity UnitCode="PCE">
<Amount>2</Amount>
</Quantity>
<Item>
<Description>ARCUL DE ARAMA</Description>
<PackQuantity>1</PackQuantity>
<PackSizeNumeric>2</PackSizeNumeric>
<BuyersItemIdentification>32527677</BuyersItemIdentification>
<StandardItemIdentification>9786068811574</StandardItemIdentification>
</Item>
<OrderLine>
</OrderLine>
</BuyerCustomerParty>
</Order>
完成后,您可以按以下方式访问数据:
Declare @fileData XML
Select @fileData=BulkColumn from OpenRowSet(Bulk'PathtoXML\XMLFileName.xml',Single_blob) x;
select
x.xData.value('ID[1]','int'),
x.xData.value('Price[1]','float'),
x.xData.value('Quantity[1]','int')
from @fileData.nodes('/Order/BuyerCustomerParty')
x(xData);
这用于/ Order / BuyerCustomerParty节点。您可以将/ Order / BuyerCustomerParty / Item声明为节点,并为项目描述调用x.xData.value('Description [1]','varChar(max)')等等... 您可以将选择的内容轻松插入临时表中,从中可以管理yoyr xml数据。 希望对您有帮助!