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日

相关文章

  • 什么是同步?

    以下是关于同步的完整使用攻略: 什么是同步? 同步是指多个线程之间按照一定的顺序执行,以避免出现数据竞争和不一致的情况。在多线程编程中,同步是非常重要的,因为多个线程同时访问共享资源时,可能会导致数据的不一致性和程序的错误。 同步的实现方式 同步可以通过以下几种方式来实现: synchronized关键字:synchronized关键字可以用来修饰方法或代码…

    Java 2023年5月12日
    00
  • SpringSecurity实现动态url拦截(基于rbac模型)

    下面是详细讲解 Spring Security 实现动态 URL 拦截(基于 RBAC 模型)的完整攻略: 1. 什么是 Spring Security Spring Security 是一个基于 Spring 框架的安全框架,提供了完善的身份认证和授权功能。 2. 什么是 RBAC 模型 RBAC(Role-Based Access Control)模型是…

    Java 2023年5月20日
    00
  • PHP中auto_prepend_file与auto_append_file用法实例分析

    PHP中auto_prepend_file与auto_append_file用法实例分析 在PHP中,auto_prepend_file和auto_append_file是两个特殊的配置选项,它们分别用于在PHP脚本执行前和执行后自动执行指定的PHP脚本文件。这两个配置选项通常被用于实现一些公共功能或初始化操作。本文将详细讲解auto_prepend_fil…

    Java 2023年6月15日
    00
  • 基于Qt实现电子木鱼小游戏

    让我来为您详细讲解“基于Qt实现电子木鱼小游戏”的完整攻略。 1. 准备工作 首先,我们需要准备好Qt开发环境。可以前往Qt官网下载并安装最新版的Qt Creator。 2. 新建项目 打开Qt Creator,点击“新建项目”,选择“Qt Widgets应用”,并设置好项目名称和存储位置。在选择项目模板时,选择“Main Window”。 3. 设计UI界…

    Java 2023年5月23日
    00
  • java基于spring注解AOP的异常处理的方法

    我来分步骤讲解Java基于Spring注解AOP的异常处理的方法: 步骤一:创建异常处理器 首先需要创建一个异常处理器,用于捕获和处理程序中可能会遇到的异常。 package com.example.demo.exception; import org.springframework.web.bind.annotation.ControllerAdvice;…

    Java 2023年5月27日
    00
  • Python get获取页面cookie代码实例

    当我们使用Python来爬取网页数据时,有时需要获取页面的cookie信息。获取cookie信息可以帮助我们模拟用户操作,使得爬虫更加真实可靠。本文将详细讲解如何使用Python的requests库来获取页面cookie信息。 一、使用requests库发送请求获取cookie信息示例 我们可以使用requests库来发送HTTP请求,并自动地获取cooki…

    Java 2023年6月15日
    00
  • Java中instance的用法详解

    Java中instance的用法详解 在Java中,instance是一个关键字,表示对象的实例。在本文中,我们将会详细讲解instance的用法,包括什么是instance、如何使用instance以及instance的常见应用场景。 什么是instance instance是一个关键字,表示对象的实例。在Java中,对象是类的一个实例,有着自己的属性和方…

    Java 2023年5月26日
    00
  • java agent 使用及实现代码

    Java Agent 是一个在 Java 虚拟机启动时就注入的 Java 类,可以对 JVM 接口及类库进行访问和修改,常用作 JVM 监控,代码植入等动态工具的实现。以下是 Java Agent 的使用及实现代码攻略。 简介 Java Agent 是 JVM 提供的一种扩展机制,可以在程序运行时动态地增强、修改、监控程序的功能。Java Agent 简单来…

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