用于拆分.csv文件的批处理文件

See*_*pha 30 windows csv batch-file command-prompt

我有一个非常大的.csv文件(> 500mb),我希望在命令提示符中将其分解为更小的.csv文件.(基本上试图在Windows中找到Linux"拆分"功能".

这必须是批处理脚本,因为我的机器只安装了Windows并且请求软件很痛苦.我遇到了许多示例代码(http://forums.techguy.org/software-development/1023949-split-100000-line-csv-into.html),但是,当我执行批处理时它不起作用.我得到的只是一个输出文件,当我要求它解析每20 000行时只有125kb.

有没有人遇到类似的问题,你是如何解决这个问题的?

Dal*_*ale 37

试试这个:

@echo off
setLocal EnableDelayedExpansion

set limit=20000
set file=export.csv
set lineCounter=1
set filenameCounter=1

set name=
set extension=
for %%a in (%file%) do (
    set "name=%%~na"
    set "extension=%%~xa"
)

for /f "tokens=*" %%a in (%file%) do (
    set splitFile=!name!-part!filenameCounter!!extension!
    if !lineCounter! gtr !limit! (
        set /a filenameCounter=!filenameCounter! + 1
        set lineCounter=1
        echo Created !splitFile!.
    )
    echo %%a>> !splitFile!

    set /a lineCounter=!lineCounter! + 1
)
Run Code Online (Sandbox Code Playgroud)

如上面的代码所示,它将原始csv文件拆分为多个csv文件,限制为20000行.您所要做的就是相应地更改!file!!limit!变量.希望能帮助到你.

  • 可悲的是,我相信这是注定要失败的.环境变量可能包含的字符串长度(~8K)是有限制的,如果您有1,000列,那么每列中的数据不必超过 - 列分隔符将占用1,000个字符作为一个开始!否则,戴尔的计划看起来很健康...... (3认同)

小智 14

使用cgwin命令SPLIT.样本 - 每500行计算一个文件:split -l 500 [filename.ext]

更多:split --help