跳到工具
ViewCSV
无需上传文件

把 CSV 拆分成多个小文件

orders.csv· 示例数据15 行 · 8 列
每份文件都是原始记录的逐字节副本:引号、换行符和 BOM 保持不变,引号内的换行也不会把一条记录拆开。
选择拆分方式,然后列出结果或打包为 ZIP 下载。

也可以在列表中单独下载每一份。

15 行

打开 CSV 文件并选择拆分方式:每份固定行数、文件大小上限、文件数,或按某列的每个值各生成一个文件。每一份都是原始记录的逐字节副本,并在开头重复表头,所以引号、换行符、编码和字节顺序标记(BOM)都保持不变。先预览拆分结果列表,再逐个下载,或打包成一个 ZIP 一起下载。超过 25 MB 的文件同样可以拆分,不会上传任何内容。

如何拆分 CSV 文件

  1. 打开 .csv、.tsv 或 .txt 文件,拖到工具上,或粘贴数据。第一行会被当作表头。
  2. 选择拆分方式,并填写行数、以字节为单位的大小上限、文件数,或选择用于拆分的列。
  3. 预览拆分结果,查看每个文件的名称、行数和大小,然后下载单个文件,或把全部文件打包成一个 ZIP 下载。

拆分出的文件以原文件名命名:orders.csv 会变成 orders-part-001.csv、orders-part-002.csv…… .tsv 文件保留 .tsv 扩展名。ZIP 文件名为 orders-parts.zip。

拆分方式

按每份行数每一份都包含这么多数据行,最后一份放剩余的行。表头不计入行数。
按文件大小上限每一份都用完整的记录填充,直到再加一条就会超过上限为止;大小按字节计算,包括表头和字节顺序标记。记录永远不会被拆成两半,所以如果某一条记录本身就超过上限,拆分会报错停止,并指出是哪条记录。
按文件数工具先统计记录数,再让每一份包含相同数量的行(向上取整,最多 1,000 个文件)。由于取整,得到的文件可能比你要求的少:5 行拆成 4 个文件,结果是 2、2、1 行三份。
按某列的值按所选列中的精确值分组,每个值生成一个文件,例如 orders-West.csv、orders-East.csv…,按首次出现的顺序排列。每份文件内的行保持原有顺序。最多 1,000 个不同的值。
每个文件都带表头默认开启。关闭后只有第一份带表头,适合之后还要把各份重新首尾拼接的情况。

带引号的值、原始记录和文件名

  • 包含分隔符或换行的带引号值,按 RFC 4180 读取,始终留在所属的记录内。多行地址永远不会被拆到两份文件中。
  • 记录以原始字节复制,不会重新解析和重写:引号、换行符和前导零都完全保留。如果文件开头有 UTF-8 字节顺序标记,每一份的开头也会写入它,Excel 仍能把每份文件识别为 UTF-8。
  • 记录之间的空行会被跳过。如果最后一条记录没有换行,会补上文件原有的换行符。
  • 列值按精确值比较:West 和 west 会生成两个文件。由于很多文件系统不区分大小写,第二个文件会命名为 orders-west-2.csv,而不会覆盖第一个。
  • 文件名中的 / \ : * ? " < > | 等字符会替换为 _,名称截断到 60 个字符,空值写作 orders-empty.csv。在预览的值列中可以看到每个文件对应的确切值。

哪些编码可以拆分

拆分直接按字节进行,这对 UTF-8 和 Windows-1252 等单字节编码是安全的。UTF-16 文件无法这样拆分,请先保存为 UTF-8,例如使用 更改 CSV 分隔符和编码。Shift_JIS、GB18030、GBK 和 Big5 文件在分隔符为逗号、分号或制表符时可以拆分,但分隔符为竖线时不行,因为在这些编码中,竖线字节可能出现在某个字符的内部。如果文件无法拆分,工具会在开始之前告诉你。

拆分出错时的解决方法

  • 某条记录超过了所选的大小上限。请调高上限;它必须能容纳表头加上最大的那条记录。
  • 这样拆分会产生超过 1,000 个文件。请增加每份行数或大小上限,或减少文件数。
  • 这一列有超过 1,000 个不同的值。请改用范围更大的列来拆分,例如用地区代替客户,或先 筛选 文件。
  • 某个带引号的值没有闭合。文件中某处开了引号却没有闭合,导致文件的剩余部分会被当成一条记录。可以用 CSV 校验 找到它。

大文件与隐私

拆分不受 25 MB 的限制。较大的文件会预览前 200 行,拆分时以 8 MB 为一块读取整份文件,因此内存占用很低。拆分出的文件在下载之前以浏览器文件数据的形式保存;实际上限取决于浏览器可用的剩余存储空间。

拆分在当前标签页的后台线程中进行,点击 取消 即可停止。文件不会发送到任何服务器。要把各份重新合在一起,请使用 合并或关联 CSV 文件;如果只是想减小文件体积而不是拆开,请使用 压缩 CSV(gzip 或 ZIP)。

示例:把订单导出文件按每份 2 行拆分

一份换行符为 CRLF(这里显示为普通换行)、含多行备注的小型订单导出,按每份 2 行拆分,每份都带表头。带引号的换行留在订单 A2 内部;输入中最后一条记录没有换行,拆分后补上了文件的 CRLF 换行符。

CSV
order_id,region,note
A1,West,ok
A2,East,"two
lines"
A3,West,"a, b"
A4,,late
A5,east,ok
3 个文件
orders-part-001.csv (2 rows)
order_id,region,note
A1,West,ok
A2,East,"two
lines"

orders-part-002.csv (2 rows)
order_id,region,note
A3,West,"a, b"
A4,,late

orders-part-003.csv (1 row)
order_id,region,note
A5,east,ok

常见问题

每一份都能在 Excel 中正常打开吗?

能,只要原文件能正常打开:每一份的表头、分隔符和编码都相同,原文件带 UTF-8 字节顺序标记时也会保留。

没有表头行时,能按某列拆分吗?

不能。第一行总是被当作表头,而拆分列是按表头名称选择的。请先添加表头行,例如在 CSV 编辑器 中添加。

为什么得到的文件比我要求的少?

“按文件数”会让每一份包含相同的行数(向上取整),所以可能还没到最后一个文件,行就分完了。10 行拆成 4 个文件,结果是 3、3、3、1 行;10 行拆成 6 个文件,结果是 5 个各含 2 行的文件。

标准与参考资料