由于目前所在项目组的需要
小弟需要开发一个上传文件的功能
文件内部的数据量最大有10万以上在将数据保存到数据库之前需要根据某个值
在内存中进行分组操作之后,才能存储到特定的表中我不知道在内存中的这种排序性能如何
以及高效率的算法希望朋友们能多出意见
如上述描述有不全之处请多多指正
小弟需要开发一个上传文件的功能
文件内部的数据量最大有10万以上在将数据保存到数据库之前需要根据某个值
在内存中进行分组操作之后,才能存储到特定的表中我不知道在内存中的这种排序性能如何
以及高效率的算法希望朋友们能多出意见
如上述描述有不全之处请多多指正
col_name#1000#2009-1-15#2099-1-31#res
每次读取一行文件后再根据col_name在缓存中查询一下相应的分组字段
之后使用下面的代码去归组Map dismantleMap = new HashMap();
if(!dismantleMap.containsKey(regionId)){
List list = new ArrayList();
list.add(line);
dismantleMap.put(regionId, list);
}else{
((List) dismantleMap.get(regionId)).add(line);
}解析使用下面的方式List batchIdList = new ArrayList();
Map retMap = new HashMap();
retMap = check(request, in);
Set set = retMap.keySet();
Iterator retIter = set.iterator();
while(retIter.hasNext()){
String tempRegionId = (String) retIter.next();
long tempBatchId = createBatchOptTask(request, (ArrayList)retMap.get(tempRegionId)); //创建一个由进程去扫描处理的任务
batchIdList.add(new Long(tempBatchId));
}但是我感觉这种做法对于10万以上的数据量处理起来并不十分理想
可能会导致界面死掉一段时间,对于用户的感知度不好
不知道有没有高手能指点一些更好的做法呢?
我觉的你可以把数据读出来了放进一个对象里
然后把对象放list里...
一次性插入数据库再去分组
但在客户端要能选择上传到服务器的地址
给位怎么解决,用java
本机测试的结果是104400条数据开始上传到生成相应的任务所需的时间是4分30秒左右
但是感觉还不是很理想不知道还有没有更好的方法
而且经过测试读取文件的速度还是相当快的
时间主要还是消耗在保存数据到数据库中