将巨大的 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 脚本》。
英文版