跳到工具
ViewCSV
无需上传文件

压缩 CSV

把 CSV、.gz 或 .zip 文件拖到这里
操作
按文件原始字节压缩,因此还原后得到完全相同的文件,包括编码、BOM 和换行符。
打开一个文件进行压缩或还原。

打开 CSV 文件,选择 gzip 或 ZIP,压缩完成后文件会立即下载:orders.csv 会变成 orders.csv.gz 或 orders.zip。反过来,打开 .gz 或 .zip 文件即可还原出其中的文件。工具不会解析或改动任何字节,所以编码、分隔符、引号、换行符以及字节顺序标记(BOM)都能原样恢复。压缩在你的浏览器中进行,文件不会上传。

如何压缩或还原 CSV

  1. 打开或拖入文件。以 .gz 或 .zip 结尾的文件会让工具切换到还原模式;其他文件则进行压缩。
  2. 选择 gzip 或 ZIP,以及 1 到 9 之间的压缩级别。默认值 6 是体积与耗时之间常用的平衡点。
  3. 开始处理。结果会自动下载,工具还会显示压缩前后的大小及两者之比。

选 Gzip 还是 ZIP?

Gzip(.csv.gz)单个压缩文件,格式由 RFC 1952 定义。命令行工具、数据仓库和许多导入流程都能直接读取 .csv.gz。文件内部保存了原始文件名。
ZIP(.zip)一个压缩包,里面只有一个以原始文件名命名的条目。在 Windows 和 macOS 上双击即可打开,适合作为邮件附件,或发给不用命令行工具的人。
压缩级别1 耗时最少,9 会尽最大努力压缩得更小。对于一般的 CSV,6 和 9 的差别很小;小文件可能完全没有差别。
还原.gz 文件会还原出其中的一个文件。.zip 会还原出其中的所有文件;文件夹会被跳过,文件名中的文件夹路径会被去掉。只有一个文件时直接下载;有多个文件时会逐个列出,每个都有下载按钮。

用相同级别压缩同一个文件,每次得到的字节都完全相同,因为写入 gzip 头和 ZIP 条目的时间戳是固定值,而不是当前时间。所以输出文件可以放心用于计算校验和,或纳入版本控制。

哪些内容会原样保留

  • 文件按字节处理,而不是当作表格,所以不会重新编码:Windows-1252、Shift_JIS 或 GBK 编码的导出、分号分隔符、CRLF 换行符以及 UTF-8 字节顺序标记都会原样还原。由于根本不读取任何值,前导零和长编号也不会受影响。
  • 引号内的换行和多余的引号都不影响压缩;即使是格式有误的 CSV,也会原样压缩和还原。要检查文件本身,请使用 CSV 校验。
  • 按照 RFC 1952 的要求,gzip 以 Latin-1 保存文件名,所以中文或西里尔字母等其他文字的文件名还原后可能无法保持原样。这类文件名请使用 ZIP,或在还原后重命名。
  • 如果 ZIP 中不同文件夹里有两个同名文件,它们都会以这个名称还原。请在下载时分别重命名。

常见问题排查

  • 提示这不是 gzip 或 ZIP 文件。文件开头的字节不是 gzip 或 ZIP 的签名;它可能是被命名为 .gz 的普通 CSV,也可能是 7z、RAR 等其他压缩格式。如果要压缩它,请切换到 gzip 或 ZIP。
  • 提示 gzip 数据损坏或不完整。文件末尾保存的校验和或长度不匹配,通常说明下载被中断了。请重新获取文件。
  • 提示 ZIP 数据损坏或使用了不支持的压缩方法。只能还原“存储”(不压缩)和 Deflate 条目;不支持 Deflate64、BZIP2、LZMA 等方法。也不支持带密码的 ZIP 文件,请用会提示输入密码的解压软件解压。
  • 压缩后几乎没有变小。包含大量不同值(例如随机 ID 或哈希值)的 CSV 比重复性高的数据更难压缩;很小的文件也收益不大,因为格式本身会增加固定的文件头。对于有类型的列式数据,转换为 Parquet 可以进一步缩小体积。

大文件与隐私

这里没有 25 MB 的限制,因为文件从不作为表格载入:它以 4 MB 为一块读取,并以流式方式压缩或还原。还原的数据总量一旦超过 4 GB,就会报错停止,以防所谓的“ZIP 炸弹”膨胀到巨大体积、拖垮标签页。

处理在当前标签页的后台线程中进行,点击 取消 即可停止。不会上传任何内容。如果想通过拆分来减小大文件,请使用 拆分 CSV,它也能把拆分后的各份打包成一个 ZIP 下载。

示例

一份 12 行的订单导出,使用分号分隔、逗号小数和带前导零的 SKU(这里只显示前几行),共 374 字节。由于文件很小,gzip 在 1、6、9 级下都得到同样的 185 字节;ZIP 的压缩包头更大。无论还原哪个文件,都会得到原封不动的 374 字节。

CSV
order_id;region;sku;qty;amount
SO-1001;North;00123;1;19,90
SO-1002;South;00124;2;38,90
SO-1003;East;00125;3;57,90
SO-1004;West;00123;4;76,90
…
结果
orders-march.csv.gz   185 bytes (49.5 %), restores to orders-march.csv
orders-march.zip      296 bytes (79.1 %), one entry: orders-march.csv
Restored orders-march.csv   374 bytes, identical to the original

常见问题

能把多个 CSV 文件压缩到一个 ZIP 里吗?

这个页面不行:它每次只压缩一个文件。拆分 CSV 可以把所有拆分结果打包成一个 ZIP 下载;在这里还原 ZIP 时,会还原出其中的每一个文件。

.csv.gz 文件还算 CSV 吗?

它是用 gzip 压缩过的 CSV。支持 gzip 的工具,例如 gunzip、大多数数据库的导入命令和数据处理库,都能直接读取;其他工具则需要先还原为 .csv,这正是本页能做的。

压缩会改动我的数据吗?

不会。Gzip 和 ZIP 压缩都是无损的,而且这个工具从不解析 CSV,所以还原后的文件与原文件的字节序列完全相同。

标准与参考资料