分批操作

本文介绍了一种通过设置每次操作数量并利用死循环实现分批删除数据的方法,并在每批删除后进行日志截断以提高效率。当没有更多记录可删除时,循环终止。

分批操作的典型语句

set  rowcount 2000

while(1=1)

  begin

    dump transaction master with no_log

    delete from table1 where xxxxxxxxxxxx

  if @@rowcount =0 

  break

end

 

每次操作数1000,进入死循环,当删除的记录数等于0时,跳出死循环,在每删除1000行后,进行一次日志截断。

### Hutool Excel 分批写入示例代码 Hutool 是一个功能强大的 Java 工具包,提供了对 Excel 文件的简化操作。对于大数据量的 Excel 写入操作,分批写入可以有效避免内存溢出问题[^1]。以下是一个使用 Hutool 库进行 Excel 分批写入的示例代码: ```java import cn.hutool.poi.excel.ExcelWriter; import cn.hutool.poi.excel.StyleSet; import cn.hutool.poi.excel.cell.CellEditor; import cn.hutool.poi.excel.cell.SetCellValue; import java.util.ArrayList; import java.util.List; public class HutoolExcelBatchWriteExample { public static void main(String[] args) { // 创建 ExcelWriter 对象,指定文件名和 Sheet 名称 ExcelWriter writer = new ExcelWriter("batch_write_example.xlsx", "Sheet1"); // 设置表头 List<String> head = new ArrayList<>(); head.add("姓名"); head.add("年龄"); head.add("性别"); writer.write(head, true); // 模拟数据分批写入 int batchSize = 1000; // 每批写入的数据量 int totalRows = 10000; // 总行数 for (int i = 0; i < totalRows; i += batchSize) { List<List<Object>> dataBatch = new ArrayList<>(); for (int j = 0; j < batchSize && i + j < totalRows; j++) { List<Object> row = new ArrayList<>(); row.add("姓名" + (i + j)); row.add(20 + (i + j) % 10); row.add((i + j) % 2 == 0 ? "男" : "女"); dataBatch.add(row); } writer.write(dataBatch, false); // 写入数据,不覆盖表头 } // 关闭写入器 writer.close(); } } ``` 在上述代码中,`ExcelWriter` 是 Hutool 提供的核心类之一,用于写入 Excel 文件。通过设置合理的 `batchSize`,可以将大数据量分成多批次写入,从而降低内存占用[^3]。 ### 注意事项 - 在实际应用中,可以根据硬件资源调整 `batchSize` 的大小以优化性能。 - 使用 `writer.close()` 方法确保所有数据正确写入并释放资源。 - 如果需要处理更复杂的场景(如样式设置),可以通过 `StyleSet` 和 `CellEditor` 等工具进一步定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值