*把大 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代码
A | |
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:从1到N循环:将大文件按体积大致分为N份,每次取第i份,写入新文件,自动保证记录完整。
Java 集成 SPL 可参考 Java 如何调用 SPL 脚本
问题来源:https://stackoverflow.com/questions/70516423/how-to-create-multiple-csv-file-from-large-csv-file-in-java
英文版 https://c.scudata.com/article/1725521354323