首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中导入和解析大型XML文件(当“正常”方法相当慢时)

在Server中导入和解析大型XML文件(当“正常”方法相当慢时)
EN

Stack Overflow用户
提问于 2014-05-27 11:41:01
回答 3查看 4.2K关注 0票数 0

我有一个大型XML文件,需要导入并解析到SQL Server中的表格结构(“平面”)中。所谓“大”,我指的是一个大约450 MB的文件,包含多达6-7个嵌套级别和许多元素,~300。

我尝试使用OPENXML和Xml.Nodes解析该文件。这两种方法都很慢。一个读取父元素及其嵌套的子级的部分查询需要几分钟(如果不是几十分钟)才能运行。

我尝试使用SQLXML批量加载方法。不幸的是,我做不到-因为文件的结构不正确。有一个元素在逻辑上是一个父元素,它不是物理上作为父元素嵌套的。

您认为唯一的解决方案是使用.NET或Java吗?我遗漏了什么吗?

在某种程度上,我强烈希望有一个动态的解决方案。我不希望SQL Server开发人员在他们没有控制/知识的过程中,在( XML结构中)发生一些更改的情况下,继续进行编译的代码。

非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-05 12:59:18

好的。我在XML数据列上创建了一个XML索引。(只是目前的一个主要问题)。

一个查询,用了4:30分钟,现在用了~9秒!似乎用适当的xml.nodes存储XML并使用xml.nodes()函数解析数据的表是可行的解决方案。

谢谢你们所有人。

票数 1
EN

Stack Overflow用户

发布于 2014-05-27 13:52:37

因为您需要表格结构,所以可以将XML转换为CSV文件(使用这个java这个.NET工具,甚至是XSLT变换),然后转换为执行大容量插入

当然,这一切都取决于XML是否正确地形成。

票数 0
EN

Stack Overflow用户

发布于 2014-05-28 07:50:45

首先,我不太明白为什么要使用OpenXml加载文件。我非常肯定,这样做将在内部触发大量的有效性测试,根据OpenXml的ISO标准。

但是- Xml.Nodes() (我假设这意味着加载数据的DOM方式)到目前为止是加载和解析数据的最慢的方式。相反,考虑使用SAX法或类似的XmlReader。我确实意识到这篇文章是从2004年开始的--但它仍然很好地解释了这些东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23888494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档