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

使用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日

相关文章

  • Ext javascript建立超链接,进行事件处理的实现方法

    下面是关于在 ExtJS 中建立超链接并进行事件处理的实现方法的攻略。 1. 建立超链接 要在 ExtJS 中建立超链接,可以使用 Ext.dom.Element 类的 setHtml 方法。此方法可以设置元素的 innerHTML 属性,因此可以通过设置一个包含超链接代码的字符串来建立超链接。 例如,下面的代码使用 setHtml 方法建立一个包含超链接的…

    Java 2023年6月15日
    00
  • maven profile自动切换环境参数的2种方法详解

    什么是Maven profile Maven profile是指Maven中用于定义项目在不同环境下的不同配置的部分。比如通常我们在本地开发的时候,需要使用开发环境的数据库地址、账户和密码,而在不同的测试环境,这些配置参数又会有所不同。 为什么要使用Maven profile 在一些非常庞大的项目中,开发环境与测试环境差异很大,配置参数很多,如果每次从一个环…

    Java 2023年5月20日
    00
  • SpringMVC参数传递之基本数据类型和复杂对象说明

    SpringMVC参数传递之基本数据类型和复杂对象说明 在SpringMVC中,参数传递是非常重要的,它可以帮助我们将数据从页面传递到控制器中进行处理。本文将详细介绍SpringMVC中参数传递的两种方式:基本数据类型和复杂对象,并提供两个示例说明。 基本数据类型参数传递 在SpringMVC中,我们可以使用基本数据类型来传递参数。以下是一个简单的示例,它使…

    Java 2023年5月17日
    00
  • java实现字符串的全排列

    Java实现字符串的全排列 在Java中实现字符串的全排列需要使用递归算法。以下是具体的实现过程: 算法思路 将字符串转换为字符数组。 对字符数组进行排序,确保全排列按照字典序输出。 从第一个字符开始,依次和后面的字符交换位置。 对第一步和第三步进行递归操作,直到选定的第一个字符后面没有其他可选字符为止。 交换字符数组中已经选定的字符和下一位字符的位置,回溯…

    Java 2023年5月26日
    00
  • Spring Data JPA 之 JpaRepository的使用

    下面将为您详细讲解Spring Data JPA之JpaRepository的使用攻略。 什么是JpaRepository? JpaRepository是Spring Data JPA提供的一个接口,它继承自PagingAndSortingRepository接口,同时它还继承了CrudRepository接口,提供了一些与业务相关的方法,如save、del…

    Java 2023年5月20日
    00
  • 教你怎么在IDEA中创建java多模块项目

    下面是在IDEA中创建Java多模块项目的完整攻略: 1. 创建项目 首先,我们要打开IDEA,选择 “Create New Project”。然后,我们会看到一个对话框。 在对话框中,我们需要选择一个Maven项目类型,并确保我们勾选上了 “Create from archetype” 选项。然后点击 “Add archetype” 按钮,在弹出的对话框中…

    Java 2023年5月26日
    00
  • java结束进程的实例代码

    下面是“Java结束进程的实例代码”完整攻略。 标题:Java结束进程的实例代码 介绍 有时候,在Java应用程序中,我们需要结束一个进程。一种常见的情况是,当我们在一个死循环中运行代码时,我们需要手动中断程序。本文将介绍如何在Java中结束进程,并提供一些实例代码以帮助您更好地理解。 使用System.exit(int status)方法结束进程 Java…

    Java 2023年5月23日
    00
  • Java线程池ThreadPoolExecutor原理及使用实例

    Java线程池ThreadPoolExecutor原理及使用实例 1. 线程池ThreadPoolExecutor的工作原理 线程池ThreadPoolExecutor是Java中常用的一个多线程处理工具。其主要特点是在应用程序启动时预先创建线程池中的一定数量的线程,在应用程序运行时,将需要执行的任务放到线程池中,线程池中的线程依次执行这些任务。线程池负责监…

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