我正在尝试将数据从一个相当大的 xml 文件导入到 SQL Server。经过一些在线搜索后,我决定使用 OpenXML。到目前为止我的查询是
DECLARE @doc INT
DECLARE @xml XML
SELECT @xml = evnt
FROM OPENROWSET (BULK 'c:\archive.xml', SINGLE_BLOB) AS Import(evnt)
EXEC sp_xml_preparedocument @doc OUTPUT, @xml
SELECT *
FROM OPENXML( @doc, '/Events/eventData/event', 2)
WITH (
id varchar(max)
)
EXEC sp_xml_removedocument @doc
通过这种方式,我可以获取“事件”中列出的元素,但是如何从“事件”中获取一个更下一级的元素。例如,我将如何获得下面的“CustId”标签?
<event>
<custromAttribute>
<CustId>...
“事件”中的项目主要是需要的,因此路径不能改变。此外,任何其他方法也会很好。我需要它从 SQL Server 运行,所以不能使用 SSIS 或其他类似的外部工具。XQuery 似乎需要很多时间。
我正在使用 SQL Server 2008 R2