将一个100MB的XML文件导入数据库提示内存不足的问题

justforfun9912 2005-08-09 12:05:53
方法如下:
XPathDocument xpDoc = new XPathDocument(sXmlFilename);
。。。
XslTransform xslTrans = new XslTransform();
xslTrans.Load(sXslFilename);

xmlReader = xslTrans.Transform(xpDoc, (XsltArgumentList)null, (XmlResolver)null);
。。。

foreach (DataTable tbl in dataSet.Tables)
tbl.BeginLoadData();

dataSet.ReadXml (xmlReader);

foreach (DataTable tbl in dataSet.Tables)
tbl.EndLoadData();

我的机器有1GB 内存,程序运行时查看内存使用情况,发现最多时只用了不到600MB,为何提示内存不足?如何解决?

望不吝赐教
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
justforfun9912 2005-08-10
  • 打赏
  • 举报
回复
感谢各位的回复。 特别感谢 Sunmast(速马/Infosys/MVP) 。你说的很有道理。

不过这个100MB的XML是用于压力测试的。今天在更大内存的系统上进行了测试,结果OK。平时处理的最大文件,不会超过10MB,所以这个方法还是可以暂时满足需求的。

速马 2005-08-10
  • 打赏
  • 举报
回复
since you simply want to store the data from the xml file to database, why to use xsl transform? there is no need for dataset or xsl/t.
you can pick any data by a XmlReader/XmlTextReader, and then insert them into database one by one.
don't load everything into the memory.
uoyevoli 2005-08-10
  • 打赏
  • 举报
回复
Sunmast(速马/Infosys/MVP)
说的很有道理。
坎井之蛙 2005-08-09
  • 打赏
  • 举报
回复
学习中
zhilunchen 2005-08-09
  • 打赏
  • 举报
回复
这么大的XML文件,效率就差了,考虑别的解决方案吧
herony420 2005-08-09
  • 打赏
  • 举报
回复
看看系统占用的内存限制是多少,虚拟内存限制,在环境变量里面
TechEye 2005-08-09
  • 打赏
  • 举报
回复
如此大的文件,还不如转换为一个二进制文件,随机读取。
justforfun9912 2005-08-09
  • 打赏
  • 举报
回复
实际上,用这种方法,处理数据的效率还是令人满意的。用XSL 转换成结果XML 文件只需要不到10秒钟。只是在写入数据库时,比较耗费时间。但几分钟之内,还是完全可以满足要求的。

问题是,如何避免内存不足?或者能否提示用C#如何处理此类问题。谢谢
liuziran 2005-08-09
  • 打赏
  • 举报
回复
xml文件如果不是utf-8编码,那么这么大的文件,.net做一个转换我想也需要几分钟(中途很有可能挂掉)

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧