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日

相关文章

  • Ubuntu 18.04安装MySQL的教程图解

    下面是“Ubuntu 18.04安装MySQL的教程图解”的完整攻略。 简介 MySQL是一种免费、开源的关系型数据库管理系统。在Ubuntu 18.04上安装MySQL可以为您提供一个健壮、高效的数据库解决方案。本文将以图文形式详细讲解如何在Ubuntu 18.04上安装MySQL。 步骤 步骤 1 — 安装MySQL 使用以下命令来安装MySQL: su…

    database 2023年5月22日
    00
  • redis开机自启动

      1.设置redis.conf中daemonize为yes,确保守护进程开启。 2.编写开机自启动脚本    基本原理为:    系统开机启动时会去加载/etc/init.d/下面的脚本,通常而言每个脚本文件会自定义实现程序的启动;若想将新的程序开机自启动,只需在该目录下添加一个自定义启动程序的脚本,然后设置相应规则即可。    如在这里我们在/etc/i…

    Redis 2023年4月11日
    00
  • 数据库分页查询语句数据库查询

    关于数据库分页查询语句的攻略,需要从以下几个方面来讲解: 什么是分页查询 分页查询的原理 分页查询的语法格式 分页查询的常见问题 1. 什么是分页查询 分页查询是指将大量数据拆分成若干个页码进行查询,比如一个包含1000条数据的表,可以将这个表分成10页,每页100条数据,然后查询第1页、第2页、第3页等。通过分页查询,可以大大提高查询效率,降低系统负载。 …

    database 2023年5月21日
    00
  • SQL中ISNULL函数使用介绍

    当我们在编写SQL语句时,有时候需要处理NULL值的情况。为了解决这个问题,SQL中提供了ISNULL函数。ISNULL函数用于判断某个字段是否为NULL值,如果是NULL则返回指定的值。下面详细讲解ISNULL函数的使用方法和示例。 ISNULL函数的基本语法 ISNULL (check_expression, replacement_value) ISN…

    database 2023年5月21日
    00
  • dns是什么意思?dns怎么设置(手动设置/软件设置)

    DNS(Domain Name System)是指域名系统,它是网络传输的基础,它负责将人类可以理解的域名解析为计算机可理解的IP地址,使得计算机之间可以进行通讯。常用的DNS域名解析服务有阿里云、腾讯云等。 DNS设置可以手动设置和使用软件进行设置,以下是具体步骤: 手动设置DNS Windows系统 打开控制面板 选择“网络和共享中心”(或者“网络和 I…

    database 2023年5月19日
    00
  • Neo4j和MS SQL Server的区别

    Neo4j和MS SQL Server都是常见的数据管理系统,但它们在理念以及实现上有很大的区别。 Neo4j 简介 Neo4j是一个基于图的数据库管理系统。它将数据存储为节点和关系的集合,每个节点和关系都带有属性。这种数据模型可以方便地表示复杂的关系和网络,比如社交网络、知识图谱以及地图应用等。 特点 灵活:Neo4j的图数据模型比关系型数据库更加灵活,可…

    database 2023年3月27日
    00
  • redis简单总结

    一、redis的准备。 下载redis:路径:Linux:http://www.redis.io.comwindow:http://www.newasp.net/soft/67186.html 解压后,有5个应用程序: redis-server.exe:服务程序 redis-cli.exe:简单测试redis-check-dump.exe:本地数据库检查 r…

    Redis 2023年4月12日
    00
  • 大表delete删数据导致数据库异常解决

    大表delete删数据导致数据库异常,这是一个比较常见的问题。本文将从以下四个方面出发,介绍如何解决这个问题: 问题分析 解决方案 实施步骤 注意事项 问题分析 在操作大表数据时,如果在一次大规模的delete操作中删除了大量的数据,这个过程可能会持续很长时间,从而导致数据库异常。其主要原因是在delete删除大量数据时,数据库会生成大量的日志,占用大量的磁…

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