JDBC插入百万数据,不到5秒!

  java自带的批量操作,就可以很好的支持大量数据的处理。相比c#,简单很多。c#要使用oracle提供的ODP.NET,效率才很高,但是代码却很复杂。总之,在这方面,c#没得比。当然,这里的表是没加索引的,加了索引,效率会变慢,但是还是很高效。

 1 long startTime=System.currentTimeMillis();

 2         

 3         Connection conn=null;

 4         try{

 5             conn=getConnection();

 6             conn.setAutoCommit(false);

 7             

 8             PreparedStatement stmt=conn.prepareStatement("INSERT INTO product_tmp VALUES (?,?,?,?)");

 9             System.out.println("数据大小:"+datas.size());        //1000000

10 

11             int num=0;

12             for(Values v:datas){

13                 num++;

14                 stmt.setInt(1, v.getId());

15                 stmt.setString(2, v.getStr1());

16                 stmt.setString(3, v.getStr2());

17                 stmt.setString(4, v.getStr3());

18                 stmt.addBatch();

19                 //注意: 每5万,提交一次;这里不能一次提交过多的数据,我测试了一下,6万5000是极限,6万6000就会出问题,插入的数据量不对。

20                 if(num>50000){

21                     stmt.executeBatch();

22                     conn.commit();

23                     num=0;

24                 }

25             }

26             stmt.executeBatch();

27             conn.commit();

28         }catch(Exception e){

29             conn.rollback();

30             e.printStackTrace();

31         }finally{

32             closeConnection(conn);

33             long endTime=System.currentTimeMillis();

34             System.out.println("方法执行时间:"+(endTime-startTime)+"ms");

35         }

 

你可能感兴趣的:(jdbc)