关于datatable的最大行数,看MSDN文档倒是简单
若要向 DataTable 中添加行,必须先使用 NewRow 方法返回新的 DataRow 对象。NewRow 方法返回具有 DataTable 的架构的行,就像由该表的 DataColumnCollection 定义的那样。DataTable 可存储的最大行数是 16,777,216。有关更多信息,请参见 将数据添加到表中。
文档写行数是16,777,216
但当列总数为85列时,行数最多只能为:1048576行,而且不管创建几个datatable,总数只能是1048576行,一旦超过行数,就会在DataTable.NewRow(),是会报错 OutOfMemory的错误,文档中也没写是怎么回事。
请教博友,谢谢了。
你的运行内存不足吧!拿一个运存4G和16G或者32G的试试。看看区别。
电脑8G内存,进程到850M就OutOfMemory了,1G都没有上。
@ToBin: 是64位的系统吗?这我就有点猜不透了。
@ToBin: 刚去网上帮你找了找,貌似目前真没有什么比较好的解决方案。如果能分批次的去处理你的业务逻辑的话,还是按批次来吧!或者适当减少不必用的列。如果按批次来,每次数据使用完就手动GC一下。再继续下一步操作也是可行的。数据超过300M的话感觉就已经很庞大了。
@贫民窟大侠: 是64位系统
@贫民窟大侠: 实际上是要用sqlbulk批量插入。数据量大,准备一次缓存够了再一次插入数据库。
@ToBin: 哦,又长姿态了!
"实际上是要用sqlbulk批量插入。数据量大,准备一次缓存够了再一次插入数据库。"
熊是怎么死的?死读书不如无书。
你在那儿用了两个小时构建一个内存放不下的Datatable,
把数据库服务器晾在那儿吹风,这是体育老师教出来的程序员吗。
单机软件
msdn上面应该是指内存没达到上限的行数