在企业级应用开发中,将Excel文件中的数据导入到数据库是一项常见而重要的需求。本文将详细介绍如何使用Java,结合Apache POI库和JDBC技术,实现从Excel表格到MySQL数据库的数据迁移。整个过程分为三个主要步骤:添加必要的依赖库、从Excel文件中读取数据以及将数据导入到数据库中。

添加依赖库

首先,为确保项目能够处理Excel文件并与MySQL数据库交互,需要在项目的pom.xml文件中添加Apache POI和MySQL JDBC驱动的依赖。Apache POI提供了一套API来处理Microsoft Office格式的文件,而MySQL JDBC驱动则允许Java应用与MySQL数据库进行连接。

<dependencies>
    <!-- Apache POI for handling Excel files -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.2</version>
    </dependency>
    
    <!-- MySQL JDBC Driver for database connectivity -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.29</version>
    </dependency>
</dependencies>

读取Excel文件

使用Apache POI提供的API可以方便地从Excel文件中读取数据。以下代码示例展示了如何遍历Excel文件中的每一行和每个单元格,将数据读取出来并存储在一个List中,以便后续操作。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

public class ExcelReader {
    public List<List<String>> readExcel(String filePath) {
        List<List<String>> records = new ArrayList<>();
        try (FileInputStream fileInputStream = new FileInputStream(new File(filePath));
             Workbook workbook = new XSSFWorkbook(fileInputStream)) {
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                List<String> rowData = new ArrayList<>();
                for (Cell cell : row) {
                    cell.setCellType(CellType.STRING);
                    rowData.add(cell.getStringCellValue());
                }
                records.add(rowData);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return records;
    }
}

导入数据到数据库

有了Excel中的数据之后,接下来的步骤是将这些数据导入到MySQL数据库中。这可以通过使用JDBC实现。以下代码示例展示了如何连接到数据库,并使用PreparedStatement将数据批量插入到指定的数据表中。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.List;

public class DatabaseImporter {
    private static final String URL = "jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC";
    private static final String USER = "your_username";
    private static final String PASSWORD = "your_password";

    public void importData(List<List<String>> records) {
        String sql = "INSERT INTO your_table (column1, column2, column3) VALUES (?, ?, ?)";
        try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
             PreparedStatement preparedStatement = conn.prepareStatement(sql)) {
            for (List<String> record : records) {
                preparedStatement.setString(1, record.get(0));
                preparedStatement.setString(2, record.get(1));
                preparedStatement.setString(3, record.get(2));
                preparedStatement.executeUpdate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

实施流程

将以上组件整合,形成一个从Excel文件读取数据并导入到MySQL数据库的完整流程,如下所示。

public class ExcelToDatabase {
    public static void main(String[] args) {
        String filePath = "path/to/your/excel/file.xlsx";
        
        ExcelReader excelReader = new ExcelReader();
        List<List<String>> records = excelReader.readExcel(filePath);
        
        DatabaseImporter dbImporter = new DatabaseImporter();
        dbImporter.importData(records);
    }
}

总结

本文介绍了如何使用Java,结合Apache POI和JDBC技术,实现从Excel文件到MySQL数据库的数据迁移。此过程首先涉及到添加项目依赖,然后是读取Excel文件中的数据,最后将数据导入到数据库中。通过上述步骤,可以有效地将Excel中的数据迁移到MySQL数据库中,为数据管理和分析提供便利。