【发布时间】:2014-07-19 14:28:55
【问题描述】:
我有以下 XML 数据和 Element 表。
DECLARE @input XML = '<root>
<C1>
<C2>
<C3> <C4>data1</C4> </C3>
</C2>
<C2>
<C3>data2</C3>
</C2>
</C1>
<D1>
<D2>data3</D2>
<D2>data4</D2>
</D1>
</root>'
元素表:(这只是一个示例,因此可以更改以匹配适当的解决方案。)
CREATE TABLE Element ( elementId INT IDENTITY PRIMARY KEY,
elementName VARCHAR (200) NOT NULL,
parentId INT,
data VARCHAR(300) );
根据@input,根元素是C1和D1的父元素,那么C1是C2的父元素,...
SQL server 2012/2014 使用 CTE(或任何其他类型的 SQL 对象)编写存储过程以递归地将所有元素名称放入 Element 表的解决方案是什么?
在这种情况下,数据列填充数据,C4和第二个C3,D2元素有数据,其余元素为空。
我还看到了分层数据类型,我想知道这是否有助于解决这个问题?
【问题讨论】:
-
您认为 HierarchyId 是否可以帮助您填充表格,或者您愿意更改表格结构以使用 HierarchyId?
-
是的,我可以把表结构改成 HierarchyId 类型,目标是把 XML 切碎到数据库中,可以相应地制作所需的结构,当前的 Element 表是我能想到的第一个想法关于。
-
您可能想看看使用
OpenXml语句创建边缘表。更多信息:msdn.microsoft.com/en-us/library/ms175160.aspx
标签: sql sql-server xml xquery xquery-sql