现有百万级数据,需要从数据库中读取然后插入到Datatable中, 目前使用了两种方法都不行;一:用DataReader读取,然后循环插入。失败:在数据库中查询可以查询出来,但是 MySqlDataReader datareader = cmd_local.ExecuteReader(); datareader.reader()时候,返回false;
二:MySqlDataAdapter.Fill()方法,貌似MysqlDataAdapter填充有上限要求,百万级别数据,他只是微微一笑,然后弄个空白的DataTable出来。
求助大侠,是否有更好的方法解决。我穷的就剩下园豆了,答案如可行,加豆,那都是“币需的”!
大家都懂的。
望回复
不知道你为什么要把百万条记录提到页面上,我想应该可以避免,至于超时,我想试因为你的数据量太大,当web服务器返回你的请求时,对你的数据时要进行格 式化的,这个过程会很漫长,所以建议你:如果要对百万条记录进行数据分析运算,一定要利用后台存储过程(不用说b/s,c/s也是如此),如果要查询,可 以考虑分期显示,例如分页,这个操作就很简单了,可以搜索一下
用mysql "Limit" 关键字,每次只读一部分,分步处理。
如同分页原理。。。
建议批量读,比如每次读100条
dudu,谢谢光临.分批跟我现在的方式一样了, 循环读取数据,每次读取一部分。 但是在传递数据的时候,有很多筛选动作 比如:123334, 以一次取123(第一个3)4, 第二次取123(最后一个3)4, 分批会遇到这种问题,第一次传递123,第二次传递334. 这样就会造成数据丢失,或者筛选有误。
@Stephen.kang: 在读之前你先获取总共有多少条记录,然后通过while循环不停地分页读取并插入到datatable中,如:
int total = GetTotal(sql);
int pageSize = 1000;
int pageNo = 0;
while(pageSize * pageNo < total){
//分页去取输入并插入到datatable中
……
pageNo++;
}
@psforever: 哈哈, 弄来弄去又回到远点了,我最早的方式就是这种方法, while循环,直到数据库中标识字段全部更新后跳出循环。 ok,我自己在研究研究,谢谢各位
貌似放到datatable不是理智的做法,查询效率提不上去,放dictionary都比datatable好。
Limit
搞一个分页存储过程!!!
http://www.cnblogs.com/powertoolsteam/archive/2012/07/18/2597600.html
你问问他,他的MultiRow能够实现"百万行数据绑定下平滑滚动",他能够显示百万,肯定有试过怎么读出百万。
好的,我去摆放一下,谢谢