【发布时间】:2016-05-10 06:28:22
【问题描述】:
需要将xml转换成sql表。
示例 XML
<?xml version="1.0"?> <ConsumerTransactionList> <ConsumerTransaction>
<SourceSystem>
<SourceTimestamp>2016-03-02T16:10:33+08:00</SourceTimestamp>
<MarketCode>CHN</MarketCode>
</SourceSystem>
<TransactionHeader>
<PersonnelCode>4215</PersonnelCode>
<TransactionConsumer>
<ConsumerId>15859625</ConsumerId>
</TransactionConsumer>
</TransactionHeader>
<TransactionDetailList>
<TransactionDetail>
<LineNum>1</LineNum>
<TransactionTypeCode>sle</TransactionTypeCode>
</TransactionDetail>
<TransactionDetail>
<LineNum>2</LineNum>
<TransactionTypeCode>rdm</TransactionTypeCode>
</TransactionDetail>
</TransactionDetailList> </ConsumerTransaction> <ConsumerTransaction>
<SourceSystem>
<SourceTimestamp>2016-03-02T16:12:27+08:00</SourceTimestamp>
<MarketCode>KMU</MarketCode>
</SourceSystem>
<TransactionHeader>
<PersonnelCode>4152</PersonnelCode>
<TransactionConsumer>
<ConsumerId>48578589</ConsumerId>
</TransactionConsumer>
</TransactionHeader>
<TransactionDetailList>
<TransactionDetail>
<LineNum>1</LineNum>
<TransactionTypeCode>sle</TransactionTypeCode>
</TransactionDetail>
<TransactionDetail>
<LineNum>10</LineNum>
<TransactionTypeCode>rdm</TransactionTypeCode>
</TransactionDetail>
<TransactionDetail>
<LineNum>11</LineNum>
<TransactionTypeCode>rdm</TransactionTypeCode>
</TransactionDetail>
</TransactionDetailList> </ConsumerTransaction> </ConsumerTransactionList>
这是我迄今为止尝试过的:
此查询为 xml 生成排列组合。查询需要为每个标签填充一个结果集。但是我的查询混合了所有标签。这里只有我在挣扎。
SELECT
x.item.value('SourceTimestamp[1]','varchar(100)'), x.item.value('MarketCode[1]','varchar(100)'),
y.item.value('PersonnelCode[1]','varchar(100)')
,z.item.value('ConsumerId[1]','varchar(100)'),
x1.item.value('LineNum[1]','varchar(100)'), x1.item.value('TransactionTypeCode[1]','varchar(100)')
FROM
@x.nodes('//ConsumerTransaction/SourceSystem') AS x(item)
cross join @x.nodes('//ConsumerTransaction/TransactionHeader') AS y(item)
cross join @x.nodes('//ConsumerTransaction/TransactionHeader/TransactionConsumer') AS z(item)
cross apply @x.nodes('//ConsumerTransaction/TransactionDetailList/TransactionDetail') as x1(item)
【问题讨论】:
-
好的。我们知道您想要达到什么目标,但我们不知道您尝试了什么。
-
我已经附上了我正在尝试的代码
-
@Gnqz :该链接谈到了 php 中的结果。但我需要在 sql server 中