CSV 导入失败排查:分隔符、引号、编码与表头
用最小 CSV 示例定位列错位、重复表头和 UTF-8 编码问题,保留前导零、带逗号文字及空单元格,并核对导出结果。
保留原文件,把问题缩到表头、一行正常数据和一行异常数据;先核对真正写入文本的分隔符与引号。
先缩小问题
复制原文件,只保留表头、一行正常数据及一行出错数据。需要给别人看时先移除隐私值。用纯文本编辑器查看,避免电子表格把实际分隔符或引号问题隐藏起来。
打开CSV 查看器检查表格,或进入CSV 转 JSON粘贴小样本。以下示例都在浏览器本地处理。
检查实际分隔符
.csv 扩展名不保证文件使用逗号。有些导出文件用分号,数值本身则使用小数逗号:
name;price;code
Sample;12,50;001
对此选择分号(Semicolon),应得到三列。若选逗号,表头可能只剩一列,数值却被拆开。TSV 使用制表符,不是若干空格。
自动识别只会选择可能的分隔符;预览不对时,手动设置实际分隔符并重新导入,不会重写源文件。
核对列数和空单元格
三列表头需要每条数据也有三列。下面最后多写了一个逗号,导致四列:
name,region,code
Sample,Europe,001,
删除误加的最后逗号。若希望第三列为空,则应是 Sample,Europe,。空值不是整列缺失,也不需要写成 null。
值中包含逗号时要加双引号,例如 "A new, good idea",Asia,002。不要为了让解析通过而删除原文中的标点。
处理双引号与换行
双引号包围的字段需要完整闭合,内部双引号写成两个:
title,code
"The ""hello"" example",001
实际值为 The "hello" example。这里不是用反斜杠转义。闭合引号后应紧接分隔符或记录结尾,去掉误加的文字或空格。
带引号的字段可以包含换行,一条逻辑记录可能占多行文本。请核对解析后的数据行数,不要直接数文件中的换行符。
检查表头和 UTF-8
表头去掉两端空白后必须非空且唯一。name 与 name 会冲突,应明确改成 customer_name 和 account_name 等不同字段,工具不会静默覆盖。
中文或重音字符乱码时,回到原始导出软件重新保存为 UTF-8。上传器会拒绝无效 UTF-8;如果乱码已经写进原文件,仅改变输出编码不能恢复原文字。
核对成功结果与限制
先转换小样本,核对三列表头、记录数、001、带引号文字和空字符串,再处理完整文件。每个表最多 8 MiB、50,000 行、100 列及 500,000 个单元格;JSON 下载最多 24 MiB。不要靠拆掉表头或忽略错误行强行通过。
CSV 转 JSON 会把单元格保留为字符串,包括前导零和空值,不自动变成数字、布尔值或日期。接收端要求其他类型时,需要依据它的数据结构另行转换。
接下来可按列名合并 CSV,或按唯一键比较两份 CSV,先核对结果再下载交付。