将巨大的 csv 文件拆分成多个 csv 文件

例题描述和简单分析

有 csv 文件 sample.csv,如下:

v2aowqhugt,q640lwdtat,8cqw2gtm0g,ybdncfeue8,3tzwyiouft,…

f0ewv2v00z,x2ck96ngmd,9htr2874n5,fx430s8wqy,tw40yn3t0j,…

p2h6fphwco,kldbn6rbzt,8okyllngxz,a8k9slqfms,bqz5fb7cm9,…

st63tcbfv8,2n862vqzww,2equ0ydeet,0x5tidunc6,npis28avpj,…

bn1u58s39a,mg7064jlrb,edyj3t4s95,zvuf9n29ai,1m0yn8uh0n,…

这个 csv 文件的数据量巨大,无法直接加载至内存。实际内存可以加载的数据条数不超过 100000 条,所以需要将文件拆分成多个数据条数为 100000 的 csv 文件,如下:

sample1.csv  100000条数据

sample2.csv  100000条数据

sample[n].csv  小于或等于 100000 条数据

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


A

B

1

=file("sample.csv").cursor()


2

for A1,100000

=file("sample"/#A2/".csv").export(A2)

简要说明:

A1  csv文件创建游标

A2  循环 A1 游标,每次取 100000 条数据

B2  将 A2 的数据导出到 sample[n].csv,其中的 #A2 代表循环次数,从 1 开始

JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》

问答搜集

https://stackoverflow.com/questions/60724017/how-can-i-split-a-csv-file-into-different-csv-files-by-line-in-java