日期:2014-05-19  浏览次数:20658 次

速度,关于批量数据插入问题 >>>>>>>>>>>>>>>>
我通过程序产生一批数据,这批数据是通过程序产生的,而不是从数据库中来的。
大概每一批会有十万左右。

工程使用的是ssh , 但是数据库表是通过sql动态产生的,不能使用hibernate的pojo...
我现在要将这批数据插入到数据库中。通过循环去批量插入,每次插入2千条
我通过
insert into tablename (a) select 's125' union all select 'a112' union all .....
把SQL进行组装,然后通过hibernate 执行原生sql , 

但是执行的效率太低。这样2000条都要大几秒中。。。

能否有更加高效的办法?  

如果非要使用存储过程,那这个参数 字符串 a ,如何批量传参?

------解决方案--------------------
直接使用jdbc的sql批量插入
------解决方案--------------------
当然不能用循环insert,hibernate提供了批量更新的方法,楼主可以百度其用法
------解决方案--------------------
Transaction tx = session.beginTransaction(); 
Work work = new Work(){ 
public void execute(Connection connection ) throws SQLException
 PreparedStatement stmt = ...
}
//执行
Worksession.doWork(work);
 tx.commit();
------解决方案--------------------
记录条数多,也不一定要一次一下批量者插入。可以分几次批量。
------解决方案--------------------
探讨
我通过程序产生一批数据,这批数据是通过程序产生的,而不是从数据库中来的。
大概每一批会有十万左右。

工程使用的是ssh , 但是数据库表是通过sql动态产生的,不能使用hibernate的pojo...
我现在要将这批数据插入到数据库中。通过循环去批量插入,每次插入2千条
我通过
insert into tablename (a) select 's125' union all se……