Neatbo.

CSV 导入错列或乱码:分隔符、引号、表头与前导零

排查 CSV 整行进入一个单元格、部分记录错列和编号变化的问题。通过带引号字段的示例核对分隔符、表头和目标软件导入设置。

看起来像表格,不一定解析成表格

CSV 是带有分隔规则的文本。整行挤进一个单元格,通常值得先检查分隔符;某几行突然错列,则需要检查引号和字段里的换行,而不是马上手动移动单元格。

字段内容本身也可以包含逗号。直接用查找替换把所有逗号改成分号,会同时改掉这些数据。分隔符转换应按照 CSV 结构读取和重新输出。

表头决定了后续字段怎么命名

把 CSV 转成 JSON 时,表头通常会成为对象字段名。重复、空白或不一致的表头会让后续映射变得不明确,适合在转换前处理。

邮编、订单号和带前导零的编号看起来像数字,但经常应该当作文本。Neatbo 的 CSV 转 JSON 保留数字字符串为文本;导入其他软件后,仍需检查对方有没有自动转成数字或日期。

去重之前,先定义什么叫同一条记录

两行姓名相同,不一定是同一个人;同一订单有多个商品,也不代表重复订单。选择去重依据前,应先确定数据中的业务标识和需要保留的记录。

先用一小段样本检查,再处理完整表格。记录输入与输出行数,可以帮助发现过度去重,但行数合理也不能单独证明结果正确。

整理格式与消除风险是两件事

更换分隔符或转成 JSON,不等于自动删除公式。把内容导入电子表格时,以等号等字符开头的单元格可能被解释为公式,分享来自不可信来源的数据前应检查目标软件的处理方式。

最终核对表头、含引号的单元格、前导零和代表性记录,并在目标软件中试导入。保留原始 CSV,避免仅剩一份经过多轮修补的数据。

字段里面的逗号仍然是数据

在下面的样例中,“Portland, OR”是一个完整城市字段;备注中的连续双引号表示字段内的引号。结构化解析器可以保留这些区别,全局文本替换却无法判断哪些逗号是列分隔符。

解析后检查两条记录是否都有相同的三列。编号 00123 应作为文本而不是数字 123;如果目标软件自动改写了它,应调整导入设置,或选择能够明确写入字符串单元格的格式,而不是事后只修正显示效果。

去重是另一项独立的业务决策。“订单编号加行项目号”可能比单独的订单编号更适合标识一行。应记录匹配规则并抽查被移除的数据,避免表格看起来更整齐,却悄悄丢失真实记录。

字段里面的逗号仍然是数据
现象优先考虑验证方法
每行都在一个单元格分隔符不匹配对照源文件与导入设置
只有部分行错列引号或字段内换行查看受影响的原始记录
编号丢失前导零自动数字转换把该列按文本导入
多条记录消失去重条件过宽复核用于匹配的列
可复用的虚构样例
id,city,note
00123,"Portland, OR","He said ""hello"""
00456,Taipei,review

完成前的检查清单

  • 转换分隔符或筛选之前保留副本。
  • 核对表头、记录数和有代表性的带引号字段。
  • 区分空字符串和业务上缺失的值。
  • 结构正确之外,还要单独检查公式样式的内容。

参考资料

  • RFC 4180:CSV 格式

    提供常见分隔符与引号规则的参考;电子表格导入行为可能不同。

本文相关工具

查看 CSV →不用打开表格软件,也能看清数据。CSV 清理去重 →选择要清理的列,去掉重复记录或空行。CSV 分隔符转换 →逗号、制表符、分号与竖线互转,保留引号和单元格内换行。CSV 转 JSON →把表格换成程序更容易处理的格式。