java后端接收xlsx文件,文件有40万条数据,分批保存到数据库
时间: 2025-06-15 17:21:28 浏览: 11
在Java后端处理大文件如XLSX(Excel)并将其分批保存到数据库时,通常采用流式读取和批量插入的方式来提高效率,避免一次性加载所有数据导致内存溢出。以下是处理步骤:
1. **读取Excel文件**:
使用Apache POI库(`pom.xml`中添加依赖),通过`XSSFWorkbook`类打开Excel,并创建一个`SheetReader`来逐行读取工作表。
```java
import org.apache.poi.ss.usermodel.*;
Workbook workbook = new XSSFWorkbook(fileInputStream);
Sheet sheet = workbook.getSheetAt(0); // 获取指定索引的工作表
RowIterator rowIterator = sheet.iterator();
```
2. **数据分块处理**:
设定一个适当的批次大小(比如1000或5000条数据),每次读取一定数量的数据放入List或数组中,然后进行操作。
```java
List<YourDataModel> dataList = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
YourDataModel model = processRow(row);
dataList.add(model);
if (dataList.size() >= batchSize) {
saveBatchToDatabase(dataList);
dataList.clear(); // 清空已处理数据,准备下一批
}
}
```
3. **批量插入数据库**:
用JDBC或ORM框架(如MyBatis、Hibernate等)将数据列表批量插入数据库,减少SQL查询次数。
```java
void saveBatchToDatabase(List<YourDataModel> data) {
// 执行批量插入语句
yourRepository.insertAll(data);
}
```
4. **结束处理**:
最后处理剩余的数据,如果还有数据但不满一个批次,也应执行一次批量插入。
5. **错误处理**:
提供良好的异常处理机制,处理可能出现的IO错误或数据库连接错误。
阅读全文
相关推荐
















