1
我试图将数据从一个相当大的xml文件导入到SQL Server。经过一些在线搜索后,我决定使用OpenXML。查询我至今是如何使用OpenXML访问xml中的嵌套元素
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的
你为什么会选择的OpenXML,而不是本地的SQL Server XQuery支持?看起来更容易使用,更灵活... –
我读了很多地方,OpenXML更好的大文件,但它是非常强大的内存。要解析的文件可以轻松超过100MB。 – Ryez