批量往数据库添加数据

 

 

    Connection conn = getCon();      //获取连接已经封装过的方法
          try {    
               conn.setAutoCommit(false);    
               Long beginTime = System.currentTimeMillis();    
               //构造预处理statement   
               PreparedStatement pst = conn.prepareStatement("insert into ib1 values (?)");    
               //添加次数  
               for(int i=1;i<=10000;i++){       
                  pst.setInt(1, i);    
                  pst.addBatch();    
                 //每1000次提交一次   
                if(i%1000==0){//可以设置不同的大小;如50,100,500,1000等等    
                     pst.executeBatch();    
                     conn.commit();    
                     pst.clearBatch();    
                 }    
               }   
               Long endTime = System.currentTimeMillis();    
               System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");    
               pst.close();    
               conn.close();    
              } catch (SQLException e) {    
                   e.printStackTrace();    
              }    
        }  

对照API看了下,大致就是先堆积大量的数据再一起提交。试了一下,如果是简单的数据,即便添加百万,千万条数据也仅需要若干秒。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Spark循环将数据添加数据库时,需要采取以下步骤: 1. 导入相关的依赖包和类:首先,在Spark应用程序中导入与数据库连接和操作相关的依赖包,例如JDBC驱动程序。 2. 创建数据库连接:使用数据库连接器(例如JDBC)创建与目标数据库的连接。在连接参数中提供数据库的URL、用户名和密码等信息。 3. 创建RDD:使用Spark的API(例如DataFrame或RDD)创建包含需要添加数据库数据集。 4. 使用foreachPartition函数:将创建的RDD应用foreachPartition函数进行处理。此函数可将数据集分成多个分区,并在每个分区上执行针对数据库添加操作。 5. 在分区内添加数据:在foreachPartition函数中,使用数据库连接在每个分区上循环遍历数据,并将数据插入到数据库中。对于每次循环,可以执行插入语句或使用批量插入操作,以提高效率。 6. 关闭数据库连接:在所有数据插入完成后,需要关闭数据库连接以释放资源。 在实现这些步骤时,需要注意以下事项: - 确保数据库连接的正确性:提供准确的数据库URL、用户名和密码,以确保能够成功连接到目标数据库。 - 避免频繁开启和关闭连接:将创建和关闭数据库连接的操作放在外部循环之外,以避免频繁地开启和关闭连接,从而提高性能。 - 考虑数据并行性:使用foreachPartition函数而不是foreach函数,以便能够在多个分区上并行处理数据。 - 错误处理和容错机制:在添加数据的过程中,需要考虑错误处理和容错机制,例如处理插入失败或数据格式有问题的情况。 总之,利用Spark的foreachPartition函数和数据库连接器,可以循环将数据添加数据库中。但是,在实现过程中需注意谨慎处理数据库连接、数据并行性、错误处理和容错机制等问题,以确保添加数据的正确性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值