在企业级应用开发中,将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数据库中,为数据管理和分析提供便利。