我应该做下面的事情:
1)读取一个巨大的(700MB〜1000万个元素)XML文件;
2)解析它保存顺序;
3)用SQL插入语句创建一个文本(一个或多个)文件,将其批量加载到数据库上;
4)编写关系元组并将它们写回XML。读写XML作为关系数据 - 最佳实践
我在这里交流关于最佳(==快速快速...)方式的一些想法。我将使用C#4.0和SQL Server 2008.
我相信XmlTextReader是一个好的开始。但我不知道它是否可以处理如此庞大的文件。它在实例化时载入所有文件,还是只在内存中保存实际读取行?我想我可以做一个while(reader.Read())
,那应该没问题。
什么是写入文本文件的最佳方式?因为我应该保留XML的顺序(采用一些编号模式),所以我将不得不在内存中保存一些部分的树来进行计算等等......我应该用stringbuilder迭代吗?我将有两种情况:一种是每个节点(元素,属性或文本)将在同一个表中(即将是同一个对象),另一种情况是对于每种类型的节点(只有这三种类型,没有评论等。)我将有一个表中的数据库和一个类来表示这个实体。
我最后一个具体问题是DataSet ds.WriteXml
有多好?它会处理10M元组吗?也许它最好从数据库中带来块并使用XmlWriter ......我真的不知道。
我正在测试所有这些东西......但我决定发布这个问题来倾听你们,跳过你的专业知识可以帮助我更正确,更快地完成这件事。
由于提前,
佩德罗Dusso
有人做SAX解析了吗? – kurosch 2010-09-16 20:29:34
我在.NET中使用'XmlReader',不要错过SAX。 – 2010-09-17 00:52:53
SAX是什么意思? – 2010-09-17 12:17:57