主要实现的功能是这样的:
我想实现一个上传EXCEL的功能,该功能主要分3部分:
1,上传EXCEL文件到指定的文件夹
2,然后读取该EXCEL文件内容
3,最后把EXCEL内容插入到数据库。
现在的问题是当EXCEL里的数据达到上万条的时候,插入到
数据库非常慢,一共花了5分多钟时间,我想问下有没有优化的
办法?请高手指点~
我想实现一个上传EXCEL的功能,该功能主要分3部分:
1,上传EXCEL文件到指定的文件夹
2,然后读取该EXCEL文件内容
3,最后把EXCEL内容插入到数据库。
现在的问题是当EXCEL里的数据达到上万条的时候,插入到
数据库非常慢,一共花了5分多钟时间,我想问下有没有优化的
办法?请高手指点~
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 20 == 0 ) { //20, same as the JDBC batch size //20,与JDBC批量设置相同
//flush a batch of inserts and release memory:
//将本批插入的对象立即写入数据库并释放内存
session.flush();
session.clear();
}
}
tx.commit();
session.close();
Transaction tx = session.beginTransaction();
for ( int i=0; i <100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 200 == 0 ) { //200, same as the JDBC batch size //200,与JDBC批量设置相同
//flush a batch of inserts and release memory:
//将本批插入的对象立即写入数据库并释放内存
session.flush();
session.clear();
}
}
tx.commit();
session.close();
速度慢一点是正常的
总不能像插入一条数据那么快吧
如果数据的实时性要求的不高的话
可以使用jms发送消息
让它自己写入吧