[英]Approach to process huge xml files in C#
有人可以指导我这个问题吗?
在我的机构中,我们处理大尺寸(最大1 GB)的xml文件并将详细信息插入数据库表。 根据当前的设计,我们使用XmlReader解析xml文件并形成包含所需数据的xml字符串,然后将其传递到存储过程(xml数据类型)以将详细信息插入到db中。
现在问题是我们不确定除此之外是否会有更好的方法? 所以请建议.Net 3.5和/或sql server 2005是否有任何新功能以比我们的方法更好的方式处理这个问题。
任何有关此reagrd的帮助都将受到高度赞赏。
谢谢。
你关心XML文件中的所有内容吗? 如果没有,您可以使用StreamReader
并从XML获取文本并将其传递给数据库。
如果您需要验证XML是否正确,最好使用XmlReader
。
但是,将1GB的XML转储到数据库中似乎有点奇怪,这个XML数据的目的是什么? 它有很多嵌套元素吗? 也许你可以对它进行反序列化并将每个对象存储在appropriet表中,这样就可以实现更容易理解的设计。
您可以考虑使用一些方法来简化/更好地设计软件:
MemoryMappedFile
吗? 我怀疑如果有任何性能问题,它将与存储过程和数据库方面相关,而不是读取文件。
为什么要将XML文件存储在数据库表中? 我建议使用不同的解决方案是合适的,但是如果不了解更多有关您正在尝试做什么的详细信息,则很难建议。
如果xml中的每个第一级元素都是记录,即
<rootNode>
<row>...</row>
<row>...</row>
<row>...</row>
</rootNode>
然后,您可以创建一个IDataReader
实现,该实现读取xml(通过XmlReader
)并将每个作为记录呈现,以使用SqlBulkCopy
导入。 非常像我在这里的旧答案。
好处:
SqlBulkCopy
是将数据导入数据库的最快方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.