使用JDBC在MySQL数据库中如何快速批量插入数据

yizhihongxing

使用JDBC在MySQL数据库中进行批量插入数据可以大大提高数据插入的效率。以下是详细步骤:

1.导入MySQL JDBC驱动

首先需要在Java项目中导入MySQL JDBC驱动包,这里以MySQL 8为例,可以从以下链接中下载:https://dev.mysql.com/downloads/connector/j/

2.创建JDBC连接

使用JDBC连接MySQL数据库需要以下信息:

  • 数据库URL
  • 数据库用户名
  • 数据库密码
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
String username = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, username, password);

3.创建批处理Statement

需要使用prepareStatement方法创建一个PreparedStatement对象,然后使用addBatch方法将要插入的SQL语句添加到批处理中。

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");
pstmt.setString(1, "张三");
pstmt.setInt(2, 18);
pstmt.addBatch();

pstmt.setString(1, "李四");
pstmt.setInt(2, 20);
pstmt.addBatch();

pstmt.setString(1, "王五");
pstmt.setInt(2, 22);
pstmt.addBatch();

上面的示例中,我们要将3条记录批量插入到student表中,通过setStringsetInt方法设置要插入数据的值,然后通过addBatch方法将SQL语句添加到批处理中。

4.执行批处理操作

调用executeBatch方法执行批处理操作,并将返回结果存储在一个int类型数组中。

int[] result = pstmt.executeBatch();

如果返回结果数组中的某个值为-2,则表示插入数据的主键是自动生成的,我们可以通过getGeneratedKeys方法获取插入数据的主键。

ResultSet rs = pstmt.getGeneratedKeys();
while (rs.next()) {
    int id = rs.getInt(1);
    System.out.println("插入数据的主键为:" + id);
}

5.关闭JDBC连接

使用完JDBC连接对象、PreparedStatement对象、ResultSet对象后,需要及时关闭它们。在Java 7及以上版本中,可以使用try-with-resources语句自动关闭这些资源。

try (ResultSet rs = pstmt.getGeneratedKeys();
     PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)")) {
    // 执行批处理操作
    int[] result = pstmt.executeBatch();

    // 遍历结果集获取插入数据的主键
    while (rs.next()) {
        int id = rs.getInt(1);
        System.out.println("插入数据的主键为:" + id);
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

示例1:使用JDBC批量插入1000条数据

下面是一个简单示例,使用批处理插入1000条数据。

public static void batchInsert() throws SQLException {
    String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
    String username = "root";
    String password = "password";
    Connection conn = DriverManager.getConnection(url, username, password);

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");

    for (int i = 0; i < 1000; i++) {
        pstmt.setString(1, "张三" + i);
        pstmt.setInt(2, 18 + i);
        pstmt.addBatch();
    }

    int[] result = pstmt.executeBatch();
    System.out.println("成功插入" + result.length + "条数据");

    pstmt.close();
    conn.close();
}

示例2:从CSV文件中读取数据批量插入到MySQL数据库中

我们可以从CSV文件中读取数据批量插入到MySQL数据库中,以下是示例代码:

public static void batchInsertFromCSVFile(String filePath) throws IOException, SQLException {
    String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
    String username = "root";
    String password = "password";
    Connection conn = DriverManager.getConnection(url, username, password);

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");

    try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
            pstmt.setString(1, values[0]);
            pstmt.setInt(2, Integer.parseInt(values[1]));
            pstmt.addBatch();
        }
    }

    int[] result = pstmt.executeBatch();
    System.out.println("成功插入" + result.length + "条数据");

    pstmt.close();
    conn.close();
}

在调用该方法时,需要传入一个CSV文件的路径和文件名作为参数,例如:"C:/data.csv"。其中,数据文件中每一行的数据格式为:"姓名,年龄",例如:"张三,18"。

以上就是使用JDBC在MySQL数据库中进行批量插入数据的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JDBC在MySQL数据库中如何快速批量插入数据 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • 使用Java8进行分组(多个字段的组合分组)

    使用Java8进行分组的完整攻略如下: 准备数据 首先要确保有可用的数据。以下是一个示例数据集: List<Order> orders = Arrays.asList( new Order("A001", BigDecimal.valueOf(100), "2021-01-01", "User1&…

    Java 2023年5月26日
    00
  • jabsorb笔记_几个小例子第1/2页

    jabsorb笔记_几个小例子第1/2页 什么是jabsorb jabsorb是一个 JavaScript 对象表示法 (JSON) 库,它将 Java 对象转换为 JSON 格式并反向转换。它具有很高的效率和灵活性,并且易于使用。 jabsorb的使用方法 jabsorb的使用非常简单,只需要引入jabsorb的jar包,然后创建一个JSONRPCBrid…

    Java 2023年6月15日
    00
  • SSH框架网上商城项目第4战之EasyUI菜单的实现

    SSH框架网上商城项目第4战之EasyUI菜单的实现攻略 1. 前置条件 已经配置好SSH框架,并成功部署网上商城项目。 已经引入EasyUI库文件。 2. 实现步骤 2.1 HTML页面中添加菜单代码 在HTML页面的菜单区域添加以下代码: <div id="menu" class="easyui-tree" …

    Java 2023年6月15日
    00
  • Shell脚本把文件从GBK转为UTF-8编码

    下面我将详细讲解如何通过Shell脚本将GBK编码的文件转为UTF-8编码的文件。 1. 确认文件编码格式 在进行转码操作之前,需要先确认文件的编码格式。可以通过file命令查看文件的编码格式,例如: $ file test.txt test.txt: UTF-8 Unicode text 如果文件的编码格式为GBK,则需要进行转码。 2. 安装iconv …

    Java 2023年6月1日
    00
  • jQuery+Ajax实现用户名重名实时检测

    下面是“jQuery+Ajax实现用户名重名实时检测”的完整攻略: 1. 确认需求 在包含注册功能的网站中,为了避免用户注册时输入了已经存在的用户名,通常需要使用实时检测技术,及时判断当前输入的用户名是否在数据库中已经存在。基于此需求,我们需要使用jQuery和Ajax来实现这个功能。 2. 编写HTML部分 首先,在HTML中需要创建一个表单,包含输入框和…

    Java 2023年6月15日
    00
  • Struts2开发环境搭建 附简单登录功能实例

    Struts2开发环境搭建 附简单登录功能实例 开发环境要求 首先,我们需要准备好以下开发环境:- Java JDK 1.7或者更高版本- Apache Tomcat 7或者更高版本- Eclipse IDE 或者其他Java集成开发环境 下载安装Tomcat 下载Tomcat 在Apache Tomcat的官网上,我们可以选择合适的版本进行下载和安装。一般…

    Java 2023年5月20日
    00
  • java算法之余弦相似度计算字符串相似率

    Java算法之余弦相似度计算字符串相似率 介绍 余弦相似度是一种常用的字符串相似率计算方法,可以用于文本相似度计算、推荐算法等场景。本文将介绍如何在Java中实现余弦相似度算法,可用于计算两个字符串之间的相似度。 算法原理 余弦相似度的计算原理是将两个文本的词向量表示为向量,然后计算这两个向量之间的夹角余弦值,夹角余弦值越大表示两个文本之间越相似,反之则越不…

    Java 2023年5月19日
    00
  • Mybatis中返回Map的实现

    Sure! MyBatis支持返回Map类型的结果集,我们可以将查询结果映射到Map中,其中Map中的key对应结果集中的字段名,value对应该字段所对应的值。那么,如何在MyBatis中实现返回Map类型的结果集呢?下面是实现的完整攻略: SQL语句 我们需要编写SQL语句,并在查询中使用别名,来保证返回结果中的属性名和表的列名保持一致。例如,以下SQL…

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