数据和电子表格 · CSV 清理器
为什么 Excel 会默默地损坏 CSV 字段:前导零、日期和长 ID
· 为什么它很重要
数据集 数据清理 电子表格
在电子表格中打开 CSV 并不是中立的:邮政编码会丢失零,代码会变成日期,长标识符会变成科学计数法。这篇文章解释了为什么会发生这种情况、什么是不可恢复的以及如何保持原始文件完整。
一个文件在有人打开之前一直正常 - 邮政编码 01234 变成 1234,并且损坏被保存回来
文件以邮政编码 01234 离开源系统,在电子表格中打开,并以 1234 返回给分析人员。原始 CSV 的格式没有错误:它包含带有前导零的文本。当程序猜测该列是数字然后保存其解释值时,就会出现差异。一旦有人覆盖源文件,以后的清理工具就无法知道 1234 过去是否表示 01234 还是 001234。在任何电子表格中检查之前,请保留未更改的导出。
打开时的类型猜测——电子表格如何从文本推断数字、日期和公式,以及为什么 CSV 让他们无法反驳
CSV 表示行、分隔符和引用的文本;它不声明每列的数字、日期或邮政编码类型。直接打开它的电子表格必须进行猜测。以数字开头的值可以成为数字,03-04 可以根据区域设置解释为日期,以 = 开头的值在某些应用程序中可以解释为公式。对“01234”的引用保护 CSV 分隔符,而不是自动导入向导将来将其分类为文本。
经典的伤亡——前导零、长数字标识符、任何类似于日期的内容以及以等号开头的值
邮政编码和 SKU 中的前导零、比电子表格数字格式可以保留的有效数字更多的标识符以及看起来不明确的日期字符串都是典型的受害者。科学记数法本身并不是损坏,而是一种显示选择,但在数字转换后保存长 ID 可能会丢失精确的数字。来自不可信数据的看似公式的值是一个单独的安全风险。 ToolAcre 的 CSV 导出具有公式注入安全选项,该选项为有风险的开始添加前缀,而有意计算的单元格将不再计算。
为什么损坏通常是永久性的 - 保存时的精度丢失以及以不同格式重新序列化的日期无法从输出中逆转
假设 20 位客户参考号在数字解释后四舍五入并保存。无法从新的 CSV 猜出丢失的原始数字。转换为内部日期并导出到另一个区域设置的日期可能会丢失,无论源是指 4 月 3 日还是 3 月 4 日。这就是为什么“我稍后会清理它”不是安全的第一步。在任何具有自动输入功能的软件有机会替换原始字节之前,请保留原始字节。
相反,处理原始文本 - 保留电子表格未触及的副本,并在导入之前将其清理为文本
使用将单元格视为字符串的解析器处理文本导出的副本。 ToolAcre 的 CSV Cleaner 解析浏览器中的分隔符和引用字段,并显示行警告,而不会默默地删除额外的单元格。检查标头是否仍包含其原始前导字节以及标识符是否包含确切的源字符。清理空格或重复项与解释字段的含义是分开的;即使每个字符碰巧都是数字,邮政编码也应该保留为字符串。
工作示例 - 包含 SKU 和邮政编码的产品导出,显示电子表格往返更改的内容以及文本级清理保留的内容
使用带有标题 sku;邮政编码;说明和行 00042;01234;“红色,小”和 00043;00105;“蓝色,大”的说明性导出。简单的逗号导入会折叠分号字段,而自动数字输入可以将 00042 和 01234 转换为 42 和 1234。 CSV Cleaner 的分号解析生成三个文本列,包括每个描述中引用的逗号;导出清理后的副本仍需要您将列作为文本导入到目标电子表格中。在将原始文件和往返文件发送给采购之前进行比较。
这不包括恢复先前保存已破坏的值,或配置电子表格的导入向导
这篇文章无法恢复已保存的电子表格文件中已损坏的标识符数字或前导零。文本级清理器也不会配置 Excel 的导入向导、同事的区域设置或数据库架构。一旦原始文件安全,请按照电子表格供应商的代码和 ID 列文本导入说明进行操作。通过精确的接收者工作流程测试小样本; “打开成列”并不能证明“保留了每个字符串”。
在电子表格看到文件之前修复文件 - ToolAcre CSV Cleaner 如何让您在电子表格中打开导出之前修复分隔符、编码和引用
在电子表格看到文件之前修复该文件,然后选择保持标识符文本的导入模式。 CSV Cleaner 可以在本地修复未修改导出的分隔符、编码和引用。它不会使电子表格停止代表您猜测字段类型,因此未更改的原始数据和导入后的比较仍然是最重要的保障措施。