c#-数据集中的大型XML文件(内存不足)教程
我目前正在尝试将稍大的xml文件加载到数据集中. xml文件约为700 MB,每次我尝试读取xml都需要大量时间,并且过一会儿会抛出“内存不足”异常.
DataSet ds = new DataSet();
ds.ReadXml(pathtofile);
主要问题是,对于我而言,必须使用这些数据集(我将其用于将xml文件中的数据导入sybase数据库(foreach表,foreach行,foreach列)),并且我没有任何方案文件.
我已经在Google上搜索了一段时间,但我只找到了对我不可用的解决方案.
附加信息:
我使用Sybase(ASA 9)数据库,但是在处理数据库之前C#应用程序崩溃.当我将XML读入数据集并要使用ds后,就会发生错误.我已经读过,这是使用具有大量内容的数据集时的已知错误.我至少需要一次数据集中的数据,因为我需要将其导入数据库.
解决方法:
您可以使用ReadXml方法的重载来克服此问题.而是传递一个缓冲的流,看看是否可以为您加快速度.
这是代码:
DataSet ds = new DataSet();
FileStream filestream = File.OpenRead(pathtofile);
BufferedStream buffered = new BufferedStream(filestream);
ds.ReadXml(buffered);
根据您所讨论的数据大小,数据集本身可能会受到内存的限制. XML的部分问题在于,仅通过错误选择元素名称和嵌套深度,它就可以占用500kb的数据并将其变成500MB.由于缺少架构,因此您可以通过读取上述文件来缩短内存限制,并用较短的版本替换元素名称(例如,将< Version>< / Version>替换为< V> < / V>将字节减少> 60%).
祝您好运,希望对您有所帮助!