CSV 校验器

CSV 校验器

已加载文件:

一个在电子表格里能正常打开的 CSV,仍可能在导入数据库或上传到 API 时失败。本校验器按照 RFC 4180 的规定读取文件,并列出每一处结构问题及其行号:一直没有闭合的引号、列数不对的行、为空或重复的表头名称、文件开头的字节顺序标记(BOM),以及留在行尾的分隔符。粘贴文本或选择文件,选好分隔符(也可以让工具自动检测),然后查看报告即可。

如何校验 CSV 文件

  1. 1

    粘贴或上传 CSV

    把文本粘贴到输入框,或选择 .csv、.tsv、.txt 文件。支持最多 1,000,000 个字符的文件。

  2. 2

    选择分隔符和表头行

    分隔符可保持自动检测,也可以指定为逗号、分号、制表符或竖线。同时说明第一行是否为列名。

  3. 3

    查看报告

    每个问题都会附带行号和通俗的说明,并标明是错误还是警告。可以复制报告分享给他人。

  4. 4

    修改后再次检查

    在编辑器中修正相应的行,然后重新开始并再次粘贴文件,直到报告显示没有发现问题。

校验器检查哪些内容

RFC 4180 是 CSV 最接近标准的规范。它规定记录之间用换行符分隔;包含分隔符、引号或换行符的字段必须用双引号括起来;带引号字段内部的引号要写两遍("")。校验器会把这些规则应用到你的文本上,再加上几项实际使用中很重要的检查。

检查项目及报告方式

检查项 严重程度 触发条件
引号不成对 错误 带引号的字段已打开,但文件在它闭合之前就结束了。显示的行号是引号打开的那一行。
无引号字段中出现引号 错误 不以引号开头的字段中间出现了 ",例如 5" pipe。
结束引号之后还有文本 错误 结束引号后面跟的不是分隔符或换行,例如 "abc"def。
列数 错误 某一行的字段数比第一行多或少。
表头名称为空 错误 表头行中有列名是空白的。
表头名称重复 错误 忽略空格和大小写后,两列的名称相同(Name 与 name)。
字节顺序标记 警告 文件以不可见字符 U+FEFF 开头。
行尾多余分隔符 警告 某一行以分隔符结尾,因此多出一个空列。
空行 警告 记录之间有空行。

分隔符

自动模式会查看前 25 个非空行,选出最常把这些行拆成相同字段数的逗号、分号、制表符或竖线。带引号字段里的分隔符会被忽略,所以 "Smith, J" 不会被算作两列。如果两个候选并列,则选逗号。在以逗号作小数点的地区,用分号分隔的文件很常见;如果文件中两种情况混用,请自行选择分隔符。

行号

行号按你提供的文本中的物理行计算,从 1 开始。包含换行的带引号字段会跨越多个物理行;该记录中的问题会报告在记录开始的那一行。

CSV 出错的常见原因

  • 电子表格导出时加入了 BOM,有些导入工具会把它当作第一个列名的一部分。
  • 含有逗号或引号的自由文本列,没有被导出脚本用引号括起来。
  • 合并了列数不同的文件。
  • 脚本在写出每个值时都在后面加分隔符,导致行尾多出逗号。

常见问题

不算。只要该行的字段数与第一行相同,最后的空值就只是普通数据。只有当行尾分隔符使该行比第一行多出一个字段,或者表头行本身以分隔符结尾时,校验器才会给出警告。

带引号的字段一旦没有闭合,其后的所有内容都会被当作该字段的一部分,后面的行也就无法可靠地比较。请修正报告所指行上的引号,再校验一次,即可看到后续的问题。

不会。它只检查文件的结构:引号、分隔符、列数、表头名称、字节顺序标记和空行。它不会判断某个值是否为有效的数字、日期或邮箱,文本按 UTF-8 读取。

不会。你粘贴的文本或选择的文件在你的浏览器中读取和检查,不会发送到我们的服务器,也不会加入页面链接。在各步骤之间,内容只保存在你当前的浏览器标签页中,重新开始会将其清除。链接中只会出现分隔符和表头的选择。

相关工具

此工具还提供其他语言版本