java实现批量导入.csv文件到mysql数据库

下面我来详细讲解如何使用Java实现批量导入.csv文件到MySQL数据库的攻略。

一、准备工作

  1. 导入MySQL依赖

在Maven项目中,需要在pom.xml文件中导入MySQL的依赖,代码如下:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.11</version>
</dependency>
  1. 创建数据库和表

在MySQL数据库中,需要先创建好导入数据的表,如下所示:

CREATE TABLE test (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(10) NOT NULL,
  age INT,
  PRIMARY KEY (id)
);

二、CSV文件读取与解析

  1. 读取CSV文件

使用Java中的BufferedReader类可以较方便地读取CSV文件,代码如下:

BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
  1. 解析CSV文件

使用Java中的String类中的split()方法进行解析,代码如下:

String line;
while ((line = reader.readLine()) != null) {
    String[] data = line.split(",");
    // 处理每一行数据
}

三、批量插入到MySQL数据库

  1. 使用Java中的JDBC插入数据

使用Java中的JDBC进行插入数据,代码如下:

Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
String sql = "INSERT INTO test (name, age) VALUES (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
for (String[] data : dataList) {
    statement.setString(1, data[0]);
    statement.setString(2, data[1]);
    statement.addBatch();
}
statement.executeBatch();
  1. 使用MySQL的LOAD DATA INFILE语句插入数据

使用MySQL中的LOAD DATA INFILE语句可以更快地将数据插入到MySQL数据库中,代码如下:

Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
String sql = "LOAD DATA INFILE 'test.csv' INTO TABLE test FIELDS TERMINATED BY ','";
PreparedStatement statement = connection.prepareStatement(sql);
statement.execute();

示例一:
假设我们有一个名为“student.csv”的文件,里面有姓名(String类型)和年龄(int类型)两列数据,我们需要将这个文件中的数据插入到MySQL的student表中。student表结构如下:

CREATE TABLE student (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(10) DEFAULT NULL,
    age int(11) DEFAULT NULL,
    PRIMARY KEY (id)
);

代码实现:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.io.FileReader;

public class ImportCsv {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "password";

        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, username, password);

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

        List<String[]> dataList = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader("student.csv"))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] data = line.split(",");
                dataList.add(data);
            }
        }

        for (String[] data : dataList) {
            String name = data[0];
            int age = Integer.parseInt(data[1]);

            stmt.setString(1, name);
            stmt.setInt(2, age);

            stmt.addBatch();
        }

        stmt.executeBatch();
        conn.close();
    }
}

示例二:
假设我们有一个名为“user.csv”的文件,里面有用户名(String类型)和密码(String类型)两列数据,我们需要将这个文件中的数据插入到MySQL的user表中。user表结构如下:

CREATE TABLE user (
    id int(11) NOT NULL AUTO_INCREMENT,
    username varchar(10) DEFAULT NULL,
    password varchar(20) DEFAULT NULL,
    PRIMARY KEY (id)
);

代码实现:

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

public class ImportCsv {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "password";

        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, username, password);

        String sql = "LOAD DATA INFILE 'user.csv' INTO TABLE user FIELDS TERMINATED BY ','";
        PreparedStatement stmt = conn.prepareStatement(sql);

        stmt.execute();
        conn.close();
    }
}

总结一下,Java实现批量导入.csv文件到MySQL数据库,需要先读取并解析CSV文件,然后使用JDBC或者MySQL的LOAD DATA INFILE语句进行批量插入。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现批量导入.csv文件到mysql数据库 - Python技术站

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

相关文章

  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    以下是详细的java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)的攻略: 1.安装log4j 我们在进行自定义日志输出文件之前,需要先安装一个java非常常用的日志库—log4j,安装的步骤如下:1. 前往Apache Log4j官网(https://logging.apache.org/log4j/2.x/)下载最新版的log4j。2. …

    Java 2023年5月26日
    00
  • 一文给你通俗易懂的讲解Java异常

    接下来我会为您详细讲解如何写出一篇讲解Java异常的通俗易懂的文章。 一、标题的制定 首先,在制定文章标题时,要考虑读者的需求和写作的目的,最好能够让读者很快地了解这篇文章的主旨。因此,我们可以采用“一文给你通俗易懂的讲解Java异常”的形式,直接点明我们的主题,并与读者产生共鸣。 二、在引言中概括Java异常概念 接下来在引言中需要对Java异常相关概念进…

    Java 2023年5月26日
    00
  • java集合类源码分析之Set详解

    让我来详细讲解一下“Java集合类源码分析之Set详解”的完整攻略。 目录 Set概述 Java Set实现方式 Set常用方法及实现原理 TreeSet示例 HashSet示例 1. Set概述 Set是Java中的一个集合接口,用于存储不允许重复元素的集合。Set接口实现了Collection接口,所以Set集合也继承了Collection集合中的一些方…

    Java 2023年5月20日
    00
  • Spring注解驱动之BeanFactoryPostProcessor原理解析

    Spring注解驱动之BeanFactoryPostProcessor原理解析 在Spring中,BeanFactoryPostProcessor是Spring IoC容器提供的一个扩展点,它可以在Bean被实例化之前,对Bean进行改变或者增强。本文就详细介绍一下BeanFactoryPostProcessor的原理以及示例说明。 BeanFactoryP…

    Java 2023年5月31日
    00
  • 使用json对象转化为key,value的对象数组

    将JSON对象转化为key-value的对象数组,我们可以使用JavaScript的map函数。 首先,我们需要将JSON字符串解析为JSON对象,使用JSON.parse()方法可以完成这一步操作。接下来,为了将JSON对象转化为key-value的对象数组,我们需要使用map函数,对JSON对象进行遍历,返回转化后的数组。 以下是完整的转化过程: 将JS…

    Java 2023年5月26日
    00
  • 解析C#彩色图像灰度化算法的实现代码详解

    接下来我将根据题目要求,详细讲解“解析C#彩色图像灰度化算法的实现代码详解”的完整攻略。 一、什么是灰度化算法 灰度化算法是图像处理中的一种重要操作,将彩色图像转化为灰度图像。在灰度图像中,每个像素点只保存一个灰度值,代表了该像素点在黑白色阶上的明暗程度。灰度图像通常比彩色图像更加简洁、易于处理。 二、C#彩色图像灰度化算法的实现 1. 方法一:加权平均法 …

    Java 2023年5月19日
    00
  • Java及数据库对日期进行格式化方式

    Java及数据库对日期进行格式化方式的完整攻略: Java中日期格式化的步骤: 定义日期格式化字符串:通过SimpleDateFormat类的构造函数来定义日期格式化字符串。例如,”yyyy-MM-dd HH:mm:ss”表示的是年-月-日 时:分:秒的格式。其中,字母y代表年份,M代表月份,d代表日期,H代表24小时制的小时数,m代表分钟数,s代表秒数。 …

    Java 2023年5月20日
    00
  • 微信小程序微信登录的实现方法详解(JAVA后台)

    下面是详细的攻略: 背景介绍 微信小程序微信登录是指用户可以通过微信账号快速登录小程序,无需再次注册账号。实现微信登录的关键在于后台服务器实现微信的登录认证功能。本文将详细讲解如何在Java后台实现微信登录的功能。 实现方法 实现微信登录功能的具体步骤如下: 1.前端页面添加微信登录按钮 <button type="primary"…

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