如何将xml文件转换成sql的表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将xml文件转换成sql的表相关的知识,希望对你有一定的参考价值。
select * from 表名 for xml 以下是详细介绍: FOR 子句 FOR 子句用于指定 BROWSE 或 XML 选项(BROWSE 和 XML 是不相关的选项)。 语法 [ FOR BROWSE | XML RAW | AUTO | EXPLICIT [ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] ]... 参考技术A 可以导入到数据库生成表将 XML 转换为表 SQL Server 2005
【中文标题】将 XML 转换为表 SQL Server 2005【英文标题】:Convert XML to table SQL Server 2005 【发布时间】:2018-12-22 01:52:37 【问题描述】:我想知道如何读取 XML 数据并将其转换为 T-SQL 中的表?
例如:
<t1>
<t2>
<val>Opel</val>
<t3>Merriva</t3>
<t3>Zafira</t3>
</t2>
<t2>
<val>Fiat</val>
<t3>Albea</t3>
</t2>
</t1>
收件人:
表1:
id value
----------------
1 Opel
2 Fiat
表2:
id id_Table1 value
-----------------------------------
1 1 Merriva
2 1 Zafira
3 2 Albea
【问题讨论】:
【参考方案1】:我没有活动的 SQL-Server 2005 来测试这个(男孩,现在是 2018 年......!!!),但我认为,这个查询也可以在如此古老的版本中工作:
DECLARE @xml XML=
N'<t1>
<t2>
<val>Opel</val>
<t3>Merriva</t3>
<t3>Zafira</t3>
</t2>
<t2>
<val>Fiat</val>
<t3>Albea</t3>
</t2>
</t1>';
--The CTE will return the CarName with a running index together with the related data as XML-node
WITH Cars AS
(
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS t2_index
,t2.value(N'(val/text())[1]',N'nvarchar(100)') AS t2_val
,t2.query(N't3') AS t3_nodes
FROM @xml.nodes(N'/t1/t2') A(t2)
)
--This part will append all related data with a running number for the related type data
SELECT Cars.*
,ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) AS CarValueIndex
,t3.value(N'text()[1]',N'nvarchar(100)') AS CarValue
INTO #tmpCars --write the result into a temp table
FROM Cars
OUTER APPLY t3_nodes.nodes(N't3') A(t3);
--All data de-normalized
SELECT * FROM #tmpCars;
--This query will bring back the parent rows
SELECT t2_index AS CarID
,t2_val AS CarName
FROM #tmpCars
GROUP BY t2_index,t2_val;
--And this query will return the related child data
SELECT CarValueIndex AS CarTypeID
,t2_index AS fk_CarID
,CarValue AS CarType
FROM #tmpCars;
GO
DROP TABLE #tmpCars;
如果有机会迁移到更现代的 SQL-Server,您真的应该这样做......
更新
根据this link,.value()
和.nodes()
函数是在 v2008 中引入的。但我有一个不好的记忆,它在 2005 年就已经工作了,可能与一些服务包一起......试试看。
【讨论】:
以上是关于如何将xml文件转换成sql的表的主要内容,如果未能解决你的问题,请参考以下文章