把大 csv 拆成若干小文件

某 csv 文件远大于 5M,部分数据如下:

OrderID,Client,SellerID,Amount,OrderDate

1,SPLI,219,9173,01/17/2022

2,HU,110,6192,10/01/2020

3,SPL,173,5659,04/23/2020

4,OFS,7,3811,02/05/2023

5,ARO,146,3752,08/27/2021

要求:用 Java 将该文件拆分成 5M 左右的小文件,文件名带序号,比如 Orders1.csv、Orders2.csv……注意一条记录不要分到 2 个文件。

编写SPL代码



1

=file("d:/OrdersBig.csv")

2

=A1.size()\(1000*1000*5)+1

3

=A2.(T("d:/Orders" / ~ / ".csv",A1.cursor@ts(;~:A2)))

A2:算出小文件数量N。符号\是除法取整,+1后每个文件略小于5M

A3:从1N循环:将大文件按体积大致分为N份,每次取第i份,写入新文件,自动保证记录完整。

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本
问题来源:https://stackoverflow.com/questions/70516423/how-to-create-multiple-csv-file-from-large-csv-file-in-java