0

一个新手问题:

说,我有一个这样的 T-SQL:

     DECLARE @xml XML
         SET @xml = '<r><b>123</b></r><r><b>456</b></r>'
      SELECT row.col.value('(b/text())[1]', 'integer') AS b_id
        FROM @xml.nodes('//r') row(col)

在运行 XPath 表达式时,我们是否知道 MS Sql Server 是使用基于 SAX 的解析器还是基于 DOM 的解析器?想要澄清这一点,因为我们正在考虑使用它来将大量数据暂存到临时表中并在临时表上进行进一步处理。为了对数据服务器有礼貌(在消耗 CPU 周期方面),我们希望确保不会引起问题。我尝试在网上搜索,但无法得到明确的答案。

另外,我们应该使用 OPENXML 吗?它比 adhoc 有什么好处吗?

提前致谢!

4

1 回答 1

0

我无法回答您的 SAX/DOM 查询,但您的真正问题似乎是如何有效地将 XML 加载到 SQL Server 中。这个问题提到了一种方式,SQL Server 文档有其他方式。

OPENXML()可能不是最好的方法,因为您首先必须将整个 XML 文档作为参数传递给sp_xml_preparedocument,这意味着它不是批量加载数据的有用方法。

但是,对您来说,最好和最简单的方法可能是开始测试并查看不同的批量加载解决方案在您的环境中的执行情况。

于 2012-07-26T19:45:52.230 回答