jdbc批量插入

简介: 分享牛,分享牛原创。有这样一个需求,文本文件中的数据批量的插入mysql,怎么用jdbc方式批量插入呢?jdbc默认提供了批量插入的方法,可能用一次就忘记了,这里做笔记记录一下jdbc批量插入吧。

分享牛,分享牛原创。有这样一个需求,文本文件中的数据批量的插入mysql,怎么用jdbc方式批量插入呢?

jdbc默认提供了批量插入的方法,可能用一次就忘记了,这里做笔记记录一下jdbc批量插入吧。

1.1.1. 代码

Connection conn = null;
 
     try {
 
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cxjc", "root", "");
conn.setAutoCommit(false);
String sql = "insert into accout(id,NAME,money) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
for(int i=1; i<3000; i++){
   
    ps.setString(1, i+"");
    ps.setString(2, i+"");
    ps.setString(3, i+"");
    //添加
    ps.addBatch();
   
}
//执行
 ps.executeBatch();
conn.commit();
}catch(Exception e){
}
}

1.1.2. 注意的地方

conn.setAutoCommit(false);

开启不支持事物,为什么要开启这个不支持事物的操作呢?这里主要是为了提高批量插入的效率,因为如果开启事物,那么mysql批量插入的时候,会产生一个log文件记录,每一条insert产生一个log记录,那这样其实跟单条sql的插入基本一样,所以关闭事务。这样性能提高可能是量级的提升。

1.1.3. 优化

当sql非常多的时候,我们可以查询到1000条sql的时候,就插入到数据库,这样保证每次插入的记录数就是批量插入一定的数量,而不是一次性非常多,代码的演变如下:

public static void main(String[] args) {
Connection conn = null;
 
     try {
 
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cxjc", "root", "");
conn.setAutoCommit(false);
String sql = "insert into accout(id,NAME,money) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
for(int i=1; i<3000; i++){
   
    ps.setString(1, i+"");
    ps.setString(2, i+"");
    ps.setString(3, i+"");
    ps.addBatch();
    //添加
    if (i%1000==0) {
    	 ps.executeBatch();
    	conn.commit();
}
}
//执行剩余的数据
 ps.executeBatch();
conn.commit();
}catch(Exception e){
}

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
|
Java 数据库连接 定位技术
【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据
本文以GIS表为例,介绍通过Java代码向数据库插入POINT类型地理数据的方法。首先创建包含ID和POS字段的GIS表,POS字段为ST_GEOMETRY类型。接着利用Java的PreparedStatement批量插入10条经纬度相同的POINT数据,最后查询结果显示成功插入10条记录,验证了操作的正确性。
312 19
|
Java 数据库连接 定位技术
【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据
【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据
|
Java 数据库连接 定位技术
【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据
【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据
|
Java 数据库连接
使用JDBC中的PreparedStatement批量插入
使用JDBC中的PreparedStatement批量插入
|
SQL Java 关系型数据库
JDBC批量插入mysql数据
JDBC批量插入mysql数据
382 0
|
Java 关系型数据库 MySQL
JDBC学习(八):PreparedStatement实现数据的批量插入
JDBC学习(八):PreparedStatement实现数据的批量插入
523 0
|
SQL 缓存 Java
jdbc之批量插入
jdbc之批量插入
|
SQL 监控 关系型数据库
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
417 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)