【发布时间】:2015-05-21 08:17:12
【问题描述】:
我得到一个如下所示的 XML 文件:
<ns0:Currency xmlns:ns0="http://bla.bla.Currency">
<Currency>
<IntComp>08</IntComp>
<Active>1</Active>
<Currency>USD</Currency>
<Text>US Dollar</Text>
</Currency>
</ns0:Currency>
编辑:我需要将货币中的所有这些字段放入表格中,这应该适用于所有看起来像这样的文件。不仅是这些值。
我想将这些值放入具有相同列的我的 sql 表中,我想将这些值合并到表中,以便在 IntComp 值 && 货币匹配与另一个文件匹配时更新。如果文件不匹配,它将插入。
我还没有弄清楚如何编写这个 sql 查询。
编辑: 表格如下所示。
dbo.Integration
ID | XMLData | Entity | EntityId | Action | ....
XMLData 是我想要发送到另一个表并从该字段中挑选出那些节点的带有 XMLData 的字符串。
另一张桌子:
dbo.Currency
ID | IntComp | Active | Currency | Text
这是我迄今为止一直在尝试的:
SELECT XMLData.value('(/ns0:Currency xmlns:ns0="http://bla.bla.Currency/Currency/IntComp/node())[1]', 'int') as intComp,
XMLData.value('(/ns0:Currency xmlns:ns0="http://bla.bla.Currency/Currency/Active/node())[1]', 'int') as Active,
XMLData.value('(/ns0:Currency xmlns:ns0="http://bla.bla.Currency"/Currency/Currency/node())[1]', 'varchar(10)') as Currency,
XMLData.value('(/ns0:Currency xmlns:ns0="http://bla.bla.Currency"/Currency/text/node())[1]', 'varchar(MAX)') as Active
FROM dbo.Integration
【问题讨论】:
标签: mysql sql-server xml merge insert-update