要把list中的数据,插入到数据库表中,
list包含有几万条数据,如果一次处理的话,页面提交就没响应了,基本就死了
请问,有什么处理方法呢?
数据库是mysql
而如果是把数据库表A的数据导到表B,也可能几万条数据,又可以怎么处理呢?
list包含有几万条数据,如果一次处理的话,页面提交就没响应了,基本就死了
请问,有什么处理方法呢?
数据库是mysql
而如果是把数据库表A的数据导到表B,也可能几万条数据,又可以怎么处理呢?
解决方案 »
- 关于用java实现邮件群发,邮件群发原理.请前辈指点.
- web2.0网站建设技术交流
- 关于作用域的问题
- 求救:JAVA如何调用Oracle中的存储过程,只要有一个输入参数和一个输出参数就行了,我忘了。
- JExcel
- 这样做为什么会抛出ClassCastException异常?
- 各位,有谁写过企业管理MIS系统这一块,都有些什么模块跟功能!!想看看我做的跟大家的有什么区别
- 链接页面的参数传递
- 一个大的servlet工程该如何组织他的程序框架?是各个模块完全独立还是做个总的入口好呢?
- 求助一个mybatis参数类型的问题
- 关于java JDK 安装的一些问题
- 如何在button按钮上响应多个onclick事件?
比如用ajax异步提交。
提交后,然后弹出一个层,数据正在提交过程中,请稍后。
如果处理完成后,返回一个状态码。如果成功,则隐藏层。如果失败。提示错误就行了。
addBatch
一个英文的,一个翻译的:
http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255
我的思路
1是把list中的数据写入文件 然后通过后台线程去执行LOAD DATA LOCAL INFILE "D:\SQL.txt" INTO TABLE tb; 效率和效果应该还不错
2数据库读写分离策略 具体可以去网上搜索
持久层:hibernate核心代码:用好jdbc的batch操作。
for(...){
session.saveOrUpdate(obj);
if(i%20 == 0){
session.flush(); //同步到数据库
session.clear(); //及时清空缓存
}
i++;
}
tx.commit();这样搞不信你还会挂机2) A数据导入B数据
mysql的sql:
select * from a into b要求:a和b的字段一一对应。你也可以这样:
create table b as select * from a
要求:B不存在。这样创建了A的一个副本表,字段、数据全部相同,但是会丢失A的所有键,包括主键,外键,index
如果是批量导入的话,以excel的形式上传附件的形式,在写一个批处理,在固定的时间自动执行入库操作。
只是从你的描述中,发现跟我前几天做的系统用户数据初始化类似,当时我的数据是1万7千多,是一个企业内部一个省的所有用户数据,我用的是db2数据库,且是从excel导入到数据库的操作。
你现在的问题可能是一个几万级的list,已经在页面上了,你是想把这个list的所有数据插入数据库?
这个肯定要考虑的一是执行特定数量(50-100)的插入,执行con.commit()操作,其二就是页面的操作,需要给出数据操作中的友好提示信息给用户,防止用户重复提交等操作。
mysql的效率,几万行数据不是问题吧,当然也得看你要插入的数据复杂度等问题。
这个还是有待考虑的,总感觉对你的问题不是太清楚,所以就不多说了。第二个问题,两个表之间的数据copy?这个不难吧,可以程序实现,也可以sql实现。
期待详细的操作需求……
期待详细的操作需求……
for(int i=0;<1000000;i++){
session.saveOrUpdate(obj);
if(i%20 == 0){
session.flush(); //同步到数据库
session.clear(); //及时清空缓存
}
i++;
}
tx.commit();
Hibernate 得可以分批处理,一般情况,如果是Hibernate海量数据提交的话,是Hibernate的瓶颈。。
这个正解……我以前做ERP遇到过80多万条数据的导入,通过批处理,然后页面给个层和一个进度条,这样用户体验也比较好。
至于必须大批量插入数据的时候专门做一个导入功能。
试试40楼的方法
比如用ajax异步提交。
提交后,然后弹出一个层,数据正在提交过程中,请稍后。
如果处理完成后,返回一个状态码。如果成功,则隐藏层。如果失败。提示错误就行了。
这个靠谱啊!!
引用楼上的写一个批处理。