我有一个大型XML文件,需要导入并解析到SQL Server中的表格结构(“平面”)中。所谓“大”,我指的是一个大约450 MB的文件,包含多达6-7个嵌套级别和许多元素,~300。
我尝试使用OPENXML和Xml.Nodes解析该文件。这两种方法都很慢。一个读取父元素及其嵌套的子级的部分查询需要几分钟(如果不是几十分钟)才能运行。
我尝试使用SQLXML批量加载方法。不幸的是,我做不到-因为文件的结构不正确。有一个元素在逻辑上是一个父元素,它不是物理上作为父元素嵌套的。
您认为唯一的解决方案是使用.NET或Java吗?我遗漏了什么吗?
在某种程度上,我强烈希望有一个动态的解决方案。我不希望SQL Server开发人员在他们没有控制/知识的过程中,在( XML结构中)发生一些更改的情况下,继续进行编译的代码。
非常感谢。
发布于 2014-06-05 12:59:18
好的。我在XML数据列上创建了一个XML索引。(只是目前的一个主要问题)。
一个查询,用了4:30分钟,现在用了~9秒!似乎用适当的xml.nodes存储XML并使用xml.nodes()函数解析数据的表是可行的解决方案。
谢谢你们所有人。
发布于 2014-05-27 13:52:37
发布于 2014-05-28 07:50:45
首先,我不太明白为什么要使用OpenXml加载文件。我非常肯定,这样做将在内部触发大量的有效性测试,根据OpenXml的ISO标准。
但是- Xml.Nodes() (我假设这意味着加载数据的DOM方式)到目前为止是加载和解析数据的最慢的方式。相反,考虑使用SAX法或类似的XmlReader。我确实意识到这篇文章是从2004年开始的--但它仍然很好地解释了这些东西。
https://stackoverflow.com/questions/23888494
复制相似问题