正在加载XML文件
本文关键字:文件 XML 加载 | 更新日期: 2023-09-27 18:25:06
我目前正在加载大量(1KB-6MB中的数千个文件)XML文件,并将它们加载到目标数据库中。目前,我使用的是SQLXMLBULKLOAD COM对象。我遇到的最大问题之一是COM对象在我们的事务环境中并不总是表现得很好。还有其他问题,比如性能;这个过程真的开始被接近2MB的文件阻塞,加载到表中需要几分钟,有时甚至更长(几个小时)。
所以现在我正在寻找一种替代品,它似乎有两种口味:
1) 类似于OPENXML,其中XML作为XML数据插入SQL Server
或
2) 解析内存中的XML并作为行集加载到数据库中的解决方案。
这两种方法都有缺点,我知道在得出任何结论之前,我必须开始对原型解决方案进行一些基准测试。OPENXML方法是非常有吸引力的IMO,主要是因为它承诺了一些非常好的性能数字(其他人声称从小时到毫秒)。但它的缺点是将数据存储为XML——在我的特定场景中并不理想,因为目标表已经存在,并且许多其他进程依赖于查询和SPROC,这些查询和SPROPS将这些表作为普通行集数据进行查询。
无论我选择什么解决方案,我都必须满足以下要求:
1) 必须接受任何XML文件。客户端(在业务意义上)只需要为数据提供XSD和适当的目标数据库/表。
2) 单个文件(永远不会超过~6MB)必须在1分钟内处理完毕(理想情况下甚至比这快得多)。
3) 插入的数据必须能够适应现有的查询和SPROC(即,必须最终作为正常的行集数据)
所以我的问题是,你在这种情况下有任何经验吗?你的想法和见解是什么?
我并不完全反对类似OPENXML的解决方案,只要数据在某个时刻可以作为正常的行集数据。我也对您可能有经验的第三方解决方案感兴趣,这是我们流程的重要组成部分,如果它能为我们提供最好、最稳定的解决方案,我们愿意花费一些美元。
我也不反对"滚动你自己的"建议,或Codeplex上的东西,等等。我遇到了LINQ到XSD项目,但找不到太多关于其功能的文档(只是我感兴趣的东西的一个例子)
我将重新讨论您在SQLXMLBULKLOAD COM中遇到的性能问题。我以前曾使用该组件加载500MB的xml文件。你能发布你用来调用组件的代码吗?