Apache POI操作批量导入MySQL数据库

Apache POI操作批量导入MySQL数据库

本教程将详细介绍如何使用Apache POI库来操作Excel文件,将Excel数据批量导入MySQL数据库中。通过本教程,您将学到以下内容:

  • 导入Apache POI库
  • 使用Apache POI读取Excel文件中的数据
  • 连接MySQL数据库并进行数据插入

导入Apache POI库

首先,需要在项目中添加Apache POI库的依赖。可以通过以下方式完成:

  1. 在Maven项目中,在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
  1. 在非Maven项目中,将下载的Apache POI库(poi-x.x.x.jarpoi-ooxml-x.x.x.jar)放置在项目的classpath下。

使用Apache POI读取Excel文件中的数据

读取Excel文件数据的过程分为以下几步:

  1. 创建FileInputStream对象,将Excel文件以流的形式加载到内存中。
  2. 创建Workbook对象,根据读取的Excel文件的格式(xls或xlsx)创建对应的HSSFWorkbookXSSFWorkbook对象。
  3. 获取Sheet对象,表示Excel文件中的一个工作表。
  4. 遍历Sheet对象中的每一行数据。
  5. 遍历每一行中的每一个单元格,获取单元格中存储的数据。

下面是示例代码:

import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelReader {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("data.xlsx"); // 加载Excel文件到流中
        Workbook wb = new XSSFWorkbook(fis); // 创建XSSFWorkbook对象
        Sheet sheet = wb.getSheetAt(0); // 获取第一个工作表

        // 遍历每一行数据
        for(Row row : sheet) {
            // 遍历每一个单元格
            for(Cell cell : row) {
                // 获取单元格中的数据并进行处理
                switch(cell.getCellTypeEnum()) {
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                    case FORMULA:
                        System.out.print(cell.getCellFormula() + "\t");
                        break;
                    default:
                        System.out.println();
                }
            }
            System.out.println();
        }

        wb.close(); // 清理资源
        fis.close();
    }
}

连接MySQL数据库并进行数据插入

接下来,需要使用JDBC连接MySQL数据库,并将读取到的Excel数据插入到MySQL数据库的对应表中。下面是示例代码:

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelReader {
    public static void main(String[] args) throws IOException, SQLException {
        FileInputStream fis = new FileInputStream("data.xlsx"); // 加载Excel文件到流中
        Workbook wb = new XSSFWorkbook(fis); // 创建XSSFWorkbook对象
        Sheet sheet = wb.getSheetAt(0); // 获取第一个工作表

        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "password123";
        Connection conn = DriverManager.getConnection(url, user, password); // 建立MySQL数据库连接

        String insertSql = "INSERT INTO student(id, name, age, gender) VALUES(?, ?, ?, ?)";
        PreparedStatement stmt = conn.prepareStatement(insertSql); // 创建PreparedStatement对象

        // 遍历每一行数据
        for(Row row : sheet) {
            // 获取每一行中的每一个单元格中的数据
            int id = (int) row.getCell(0).getNumericCellValue();
            String name = row.getCell(1).getStringCellValue();
            int age = (int) row.getCell(2).getNumericCellValue();
            String gender = row.getCell(3).getStringCellValue();

            // 设置PreparedStatement对象的参数
            stmt.setInt(1, id);
            stmt.setString(2, name);
            stmt.setInt(3, age);
            stmt.setString(4, gender);

            // 执行插入操作
            stmt.executeUpdate();
        }

        wb.close(); // 清理资源
        fis.close();
        stmt.close();
        conn.close();
    }
}

以上就是使用Apache POI操作批量导入MySQL数据库的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Apache POI操作批量导入MySQL数据库 - Python技术站

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

相关文章

  • 详解MySQL系统变量的查看和修改

    MySQL系统变量是MySQL服务器的某些配置参数,可以通过查看和修改这些变量来调整服务器的行为或优化性能。本文将详细介绍MySQL系统变量的查看和修改方式,并结合实例说明。 查看MySQL系统变量 通过SHOW VARIABLES命令查看MySQL系统变量 在MySQL命令行客户端中,使用“SHOW VARIABLES”命令可以列出当前MySQL服务器的所…

    MySQL 2023年3月9日
    00
  • SQL中内连接和外连接的区别

    SQL中连接(Join)用于将两个或多个表中的数据关联起来。连接可以分为内连接和外连接,它们的区别在于如何处理没有匹配上的数据。 内连接 内连接(Inner Join)将两个表中匹配的行关联起来,只输出匹配的行。语法如下: SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column…

    database 2023年3月27日
    00
  • linux服务器安装SonarQube代码检测工具的详细步骤

    下面是Linux服务器安装SonarQube代码检测工具的详细步骤: 准备工作 首先需要确保你的Linux服务器上已经安装了JDK,SonarQube运行需要Java环境。如果没有安装可以使用下面的命令安装JDK: sudo apt-get update sudo apt-get install default-jdk 下载SonarQube的安装包,你可以…

    database 2023年5月22日
    00
  • redis的分布式锁工具LockUtil

    /** * 基于redis的分布式锁工具 * * @author yuyufeng * */ public class LockUtil { // 获取redis static JedisPool jedisPool; static { JedisPoolConfig config = new JedisPoolConfig(); config.setMax…

    Redis 2023年4月16日
    00
  • 详谈redis优化配置和redis.conf说明(推荐)

    Redis优化配置攻略 Redis作为一个高性能的key-value数据库,其优化是非常重要的。下面是Redis优化配置的攻略: 第一步:升级硬件 Redis是一个CPU密集型应用程序,因此,升级更好的CPU是加速Redis性能的一个简单方法。此外,还可以增加更多的内存、网络带宽等。 第二步:优化操作系统 设置最大文件打开数: ulimit -n 10000…

    database 2023年5月22日
    00
  • MySQL8.0 创建用户及授权 – 看这篇就足够了

    MySQL8.0 创建用户及授权 – 看这篇就足够了 什么时候会用到 对接外系统时,需要给其余系统开放访问权限 本系统中,分权限管理数据,防止root权限删库跑路? mysql版本 MySql8.0+ 具体步骤 1.命令行进入MySql 使用 mysql -u#UserName -p#PassWord 命令进入MySql #UserName 代表你的MySq…

    2023年4月8日
    00
  • mysql如何实现多行查询结果合并成一行

    要实现多行查询结果合并成一行,可以使用MySQL的GROUP_CONCAT函数来完成。GROUP_CONCAT函数将多行相同列的值合并成单行,并用逗号(或其他指定的分隔符)分隔每个值。 下面是实现多行查询结果合并成一行的步骤: 使用SELECT语句查询需要合并的数据,注意需要聚合函数(如SUM、COUNT、AVG等)对数据进行分组。 例如,我们有一个orde…

    database 2023年5月22日
    00
  • SQL – CREATE 语句

    关于SQL-CREATE语句的完整攻略可以从以下几个方面入手。 1. CREATE语句的基本语法 CREATE语句被用来在数据库中创建一个新的表。其基本语句格式如下: CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, 列3 数据类型, … ); 其中,表名指定了新表的名称,列1、列2、列3等表示了新表中的列,数据类型则指定了每个列中…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部