XML 在 T-SQL 中导出的数据透视表
Pivot Data for XML Export in T-SQL
我的数据库中有一个 table,如下所示:
@attribute element data
--------------------------------------
attribute1 element1 data1
attribute2 element2 data2
我想输出 XML 如下所示:
<element1 attribute="attribute1">data1</element1>
<element2 attribute="attribute2">data2</element2>
大约有 30 个 属性 元素 名称,抱歉,它们有些动态。我在 SQL 方面并不那么熟练或知识渊博。有直接的解决方案吗?除此之外,是否有 "best-practice" 解决方案?如果我使用动态 SQL,我应该采取什么措施来 catch/prevent 潜在的错误?
实际上并没有形成有效的 xml,因为您没有在样本输出中指定根,但您可以这样做。
SELECT CAST('<' + element + ' attribute="' + attribute + '">' + data + '</' + element + '>' AS XML)
FROM Table1
FOR XML PATH('')
通过在任何查询的末尾添加 FOR XML RAW
将生成接近您要查找的内容的 XML。此外,您可以通过在末尾添加元素名称来指定元素名称,例如 FOR XML RAW ('ELEMENT_PARENT')
或根名称 FOR XML RAW ('ELEMENT_PARENT'), ROOT ('Example')
。
至于动态元素(或它们之前的属性 XML-ized)和错误捕获,您可以使用 sql 提供的任何标准技巧包。
FWIW,我发现这个站点通过几个不同的例子来说明从 SQL 脚本输出 XML 数据的方法越来越复杂。
我的数据库中有一个 table,如下所示:
@attribute element data
--------------------------------------
attribute1 element1 data1
attribute2 element2 data2
我想输出 XML 如下所示:
<element1 attribute="attribute1">data1</element1>
<element2 attribute="attribute2">data2</element2>
大约有 30 个 属性 元素 名称,抱歉,它们有些动态。我在 SQL 方面并不那么熟练或知识渊博。有直接的解决方案吗?除此之外,是否有 "best-practice" 解决方案?如果我使用动态 SQL,我应该采取什么措施来 catch/prevent 潜在的错误?
实际上并没有形成有效的 xml,因为您没有在样本输出中指定根,但您可以这样做。
SELECT CAST('<' + element + ' attribute="' + attribute + '">' + data + '</' + element + '>' AS XML)
FROM Table1
FOR XML PATH('')
通过在任何查询的末尾添加 FOR XML RAW
将生成接近您要查找的内容的 XML。此外,您可以通过在末尾添加元素名称来指定元素名称,例如 FOR XML RAW ('ELEMENT_PARENT')
或根名称 FOR XML RAW ('ELEMENT_PARENT'), ROOT ('Example')
。
至于动态元素(或它们之前的属性 XML-ized)和错误捕获,您可以使用 sql 提供的任何标准技巧包。
FWIW,我发现这个站点通过几个不同的例子来说明从 SQL 脚本输出 XML 数据的方法越来越复杂。