Java实现批量向mysql写入数据的方法

当需要向mysql中插入大批量数据时,通过Java程序向数据库逐一插入会比较慢,而批量插入可以提高插入效率。下面就讲解一下如何Java实现批量向mysql写入数据的方法。

1. 准备工作

在开始之前,需要先检查好已经安装好了Mysql的Java驱动,可以在官网下载或在maven中引入即可。

另外,在写程序之前,需要先创建一个mysql表,以下示例代码将插入数据到名为"student"的表中。

CREATE TABLE `student` (
  `id` int primary key not null auto_increment,
  `name` varchar(20),
  `age` int(3),
  `gender` varchar(10),
  `address` varchar(40)
);

2. Java批量插入数据

2.1 使用PreparedStatement

PreparedStatement是Java中操作数据库的常用类,使用该类插入数据时,批量插入只需要稍作修改即可。具体步骤如下:

  1. 创建PreparedStatement对象。
  2. 编写插入数据的SQL语句。
  3. 循环向preparedstatement对象添加参数并调用addBatch()方法。
  4. 使用executeBatch()方法一次性提交。

以下是示例代码:

String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
String username = "root";
String password = "root";
Connection conn = null;
PreparedStatement ps = null;

try {
    conn = DriverManager.getConnection(url, username, password);
    conn.setAutoCommit(false);
    String sql = "insert into student(name,age,gender,address) values (?,?,?,?)";
    ps = conn.prepareStatement(sql);
    for (int i = 1; i <= 100000; i++) {
        ps.setString(1, "name_" + i);
        ps.setInt(2, i % 100);
        ps.setString(3, i % 2 == 0 ? "男" : "女");
        ps.setString(4, "address_" + i);
        ps.addBatch();
        if (i % 10000 == 0) {
            ps.executeBatch();
            ps.clearBatch();
        }
    }
    ps.executeBatch();
    conn.commit();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        if (ps != null) {
            ps.close();
        }
        if (conn != null) {
            conn.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

2.2 使用Statement

Statement也是Java中操作数据库的常用类,使用该类插入数据时,需要通过修改mysql配置文件实现批量插入。具体步骤如下:

  1. 创建Statement对象。
  2. 将mysql的批量插入属性设置成开启状态。
  3. 循环执行插入数据的SQL语句。

以下是示例代码:

String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&rewriteBatchedStatements=true";
String username = "root";
String password = "root";
Connection conn = null;
Statement statement = null;

try {
    conn = DriverManager.getConnection(url, username, password);
    statement = conn.createStatement();
    conn.setAutoCommit(false);
    for (int i = 1; i <= 100000; i++) {
        String sql = "insert into student(name,age,gender,address) values ('name_" + i + "'," + (i % 100) + ",'" + (i % 2 == 0 ? "男" : "女") + "','address_" + i + "')";
        statement.addBatch(sql);
        if (i % 10000 == 0) {
            statement.executeBatch();
            statement.clearBatch();
        }
    }
    statement.executeBatch();
    conn.commit();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        if (statement != null) {
            statement.close();
        }
        if (conn != null) {
            conn.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

3. 总结

使用PreparedStatement或Statement均可实现批量插入mysql,PreparedStatement相比于Statement更加安全,且代码稍微复杂一些。同时,需要注意mysql的配置参数,保证批量插入的顺利进行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现批量向mysql写入数据的方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 使用 Apache 反向代理的设置技巧

    使用 Apache 反向代理可以帮助我们有效地实现多个应用之间的无缝集成和流量控制。在下面的攻略中,我们将介绍使用 Apache 反向代理的设置技巧,帮助您更好地应用于实际项目中。 原理简介 反向代理是指代理服务器接收客户端请求后,将请求转发给内部服务器,并将内部服务器返回的响应结果返回给客户端。在反向代理的过程中,客户端无需直接连接内部服务器,这样可以实现…

    Java 2023年5月19日
    00
  • Spring Security角色继承分析

    让我为你介绍一下“Spring Security角色继承分析”的完整攻略吧! 什么是Spring Security角色继承? 在Spring Security中,角色继承是一种特殊的权限机制,它允许我们在一个角色对象中定义子角色,从而继承父角色的权限。当我们使用Spring Security构建多个权限层级时,角色继承可以帮助我们设计出更具有层级结构的系统架…

    Java 2023年5月20日
    00
  • 微信小程序 http请求的session管理

    微信小程序通过http请求与服务器交互数据,实现了数据的传输和处理,而session的管理在数据传输中起着至关重要的作用。下面是“微信小程序http请求的session管理”的完整攻略。 一、什么是session? Session是一种记录客户状态的技术。客户端请求服务器后,服务器会创建一个Session对象,将用户状态信息保存其中;并为每个Session对…

    Java 2023年5月23日
    00
  • 一文详解Java8中的方法引用与构造器引用

    一文详解Java8中的方法引用与构造器引用 在Java8中,方法引用和构造器引用是非常方便且实用的特性。接下来我们来详细讲解一下这两个特性是什么以及如何使用它们。 方法引用 方法引用是直接访问已经存在的方法或者构造方法,可以使代码更加简洁易读。在使用方法引用时,需要使用操作符 :: 将方法名和对象或类名分隔开来。 方法引用有四种引用形式,具体如下: 静态方法…

    Java 2023年5月26日
    00
  • Java对象转json JsonFormat注解

    Java对象转json是Java中很常见的操作,而JsonFormat注解可以对对象中的日期字段进行格式化。下面就来详细讲解这个过程,并附带两个示例说明。 Java对象转json Java对象转json可以使用很多第三方工具库,如fastjson、Jackson、Gson等等。对于这里的讲解,我们以Jackson为例。 步骤 引入Jackson库,可以通过M…

    Java 2023年5月26日
    00
  • java简介及环境搭建

    Java简介及环境搭建 Java简介 Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。Java语言具有跨平台性和开发效率高等特点,成为了一种非常流行的编程语言。 Java环境搭建 为了学习和开发Java程序,我们需要先搭建Java环境。 安装Java开发工具包(JDK) 首先,我们需要下载并安装Java开发工具包(J…

    Java 2023年5月19日
    00
  • 基于java文件上传-原始的Servlet方式

    下面是基于Java文件上传-原始的Servlet方式的完整攻略。 准备工作 在开始前,我们需要几个准备工作: 1.安装JDK并配置环境变量2.安装Tomcat并配置环境变量3.新建一个Java Web项目 编写HTML页面 在项目的WebContent目录下新建一个html文件,编写如下代码: <html> <body> <fo…

    Java 2023年6月15日
    00
  • java与JSON数据的转换实例详解

    下面是Java与JSON数据的转换实例详解的完整攻略。 什么是JSON JSON是JavaScript Object Notation的缩写,它是一种轻量级、易于读写的数据格式,可以被多种编程语言解析和生成。JSON的主要优势在于它的可读性、可解析性和可靠性,由于其原始格式为文本,因此可以通过网络传输,而且多种编程语言都提供了JSON的解析和生成支持。 JS…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部