Java与MySQL:利用CSV文件批量导入数据

在现代数据处理中,数据导入是非常常见的任务之一。而如果需要批量导入大量数据到MySQL数据库中,CSV文件是一种非常方便的格式。本文将介绍如何利用Java语言通过读取CSV文件并使用MySQL JDBC驱动批量导入数据到MySQL数据库中。同时,我们还将使用Mermaid语法中的journey标识出这个导入过程,并使用erDiagram标识出数据表的关系。

准备工作

在开始之前,我们需要完成以下准备工作:

  1. 安装Java JDK和MySQL数据库。
  2. 下载并安装MySQL的JDBC驱动,可以从[MySQL官方网站](
  3. 准备一个包含数据的CSV文件。

CSV文件结构

在本示例中,我们假设有一个包含学生信息的CSV文件,文件的结构如下:

学生ID 姓名 年龄 性别
1 张三 20
2 李四 22
3 王五 21

MySQL数据库准备

我们需要在MySQL数据库中创建一个表来存储学生信息。可以使用以下SQL语句创建表:

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT,
  gender VARCHAR(10)
);

Java代码示例

以下是使用Java编写的代码示例,用于从CSV文件中读取数据,并将数据批量导入到MySQL数据库中。

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class CsvImporter {
    public static void main(String[] args) {
        String csvFile = "path/to/csv/file.csv";
        String jdbcUrl = "jdbc:mysql://localhost:3306/database_name";
        String username = "username";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
             BufferedReader reader = new BufferedReader(new FileReader(csvFile))) {
            String line;
            String sql = "INSERT INTO students (id, name, age, gender) VALUES (?, ?, ?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);

            // 读取CSV文件的每一行数据,并将其导入到数据库
            while ((line = reader.readLine()) != null) {
                String[] data = line.split(",");
                int id = Integer.parseInt(data[0]);
                String name = data[1];
                int age = Integer.parseInt(data[2]);
                String gender = data[3];

                statement.setInt(1, id);
                statement.setString(2, name);
                statement.setInt(3, age);
                statement.setString(4, gender);
                statement.addBatch();
            }

            // 批量执行导入操作
            statement.executeBatch();

            System.out.println("数据导入成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上代码通过JDBC驱动连接到MySQL数据库,并使用PreparedStatement来批量执行插入操作。在循环中,我们逐行读取CSV文件的数据,并将其绑定到PreparedStatement中的参数,然后通过addBatch()方法将每一行数据添加到批处理中。最后,通过executeBatch()方法执行批处理操作,将数据批量导入到数据库中。

导入过程图

下面的Mermaid语法将展示这个导入过程的旅行图:

journey
    title 数据导入过程
    section 准备工作
    section 读取CSV文件
    section 数据库连接
    section 执行插入操作
    section 关闭连接

数据表关系图

以下是使用Mermaid语法绘制的数据表关系图:

erDiagram
    students ||--o{ courses : takes
    students {
        int id
        string name
        int age
        string gender
    }
    courses {
        int id
        string name
    }

在这个关系图中,我们可以看到students表和courses表之间的关系,其中students表中的学生可以选择修读多门课程。

结束语

通过本文,我们学习了如何使用Java语言和MySQL数据库,通过读取CSV文件并批量导入数据到数据库