我应该做些休闲活动:
1)读取一个巨大的(700MB~1000万元素)XML文件;
2)解析它,保持秩序;
3)用SQL INSERT语句创建一个文本(一个或多个)文件,批量加载到数据库上;
4)编写关系元组并用XML将其写回。
我来这里是想就最好的方法交换意见。我将使用C 4.0和SQL Server 2008。
我相信xmltextreader是一个好的开始。但我不知道它能不能处理这么大的文件。它是在实例化时加载所有文件还是只在内存中保存实际的读取行?我想我可以做一个while(reader.Read())应该没问题。
写文本文件的最好方法是什么?由于我应该保留XML的顺序(采用某种编号模式),所以我必须将树的某些部分保存在内存中以进行计算等。我应该用stringbuilder迭代吗?
我将有两个场景:一个是每个节点(元素、属性或文本)将在同一个表中(即,将是同一个对象),另一个场景是,对于每种类型的节点(只有这三种类型,没有注释等等),我将在数据库中有一个表和一个类来表示这个实体。
我最后一个具体的问题是数据集有多好?它能处理10万个元组吗?也许最好从数据库中提取块并使用xmlwriter…我真的不知道。
我在测试这些东西…但我决定发这个问题来听听你们的意见,你们的专业知识可以帮助我更正确更快地做这些事情。
提前谢谢你,
佩德罗杜索

最佳答案

你猜怎么着?您没有SQL Server问题。您有一个XML问题!
面对你的处境,我毫不犹豫。我将使用Perl及其许多XML模块中的一个来解析数据,创建简单的制表符或其他分隔文件来大容量加载,并将结果文件bcp。
使用服务器解析XML有许多缺点:
不快,很可能
根据我的经验,肯定是无用的错误消息
无调试器
如果上面的一个是真的
另一方面,如果您使用perl,那么您有逐行处理和调试、旨在指导程序员的错误消息,而且如果您的第一个选择是不执行任务的包,那么还有许多其他选择。
如果您经常做这种工作,而不了解Perl,那么就学习它。它会回报你很多次的。

10-07 13:21
查看更多