CSV 文件格式是企业之间、不同软件应用之间交换结构化数据的常用标准。它基于文本,并使用分隔符来区分不同列。

下面是一个 CSV 文件数据示例:

firstName, lastName, email
Joe, Vaughn, vaugh@hotmail.com
Bob, Cunnighan, bobc@gmail.com

大多数处理数据的工具都可以导出 CSV 文件,包括 CRM、Order Management System、电子表格工具(Google Sheets 或 Microsoft Excel)以及财务软件。未来,我们也许会使用统一数据模型在应用之间传输结构化对象。但在现阶段,CSV 文件仍然是最常用、最实际的选择。

处理 CSV 文件时,很多人第一反应是使用电子表格。把 CSV 文件导入 Google Sheets 或 Microsoft Excel 确实很简单。但面对下面两个看似基础的操作时,这些工具就会显得不够灵活:

如果你只是想比较两个 CSV 导出文件,查看新增、删除或变更的行,请使用 CSV Diff Tool,而不是把它们合并起来。

执行 join 操作时,我们会使用一个公共列,把来自多个数据源的数据合并到一起。电子表格无法为某一列定义唯一约束,因此在 CSV 合并或去重方面支持有限。

本教程分为 2 个部分:

在本教程中,我们会使用 2 个演示 CSV 文件:

方案 1:用 Datablist 按公共列合并 CSV 文件

用 Datablist 处理数据很简单。下面我们来看如何通过唯一标识符合并 CSV 文件。先打开 Datablist(无需注册)即可开始。

步骤 1:导入第一个 CSV 文件

第一步是创建一个 collection,用来存放所有 CSV 数据。点击侧边栏中的 + 按钮,新建一个 collection。

创建完成后,进入 "Import CSV" 区域。

创建新的 collection

注意: CSV 文件的第一行必须包含列名。

拖放 CSV 文件,或点击从电脑中选择文件。文件加载后,先检查预览中显示的行数和列数是否正确,再进入下一步。

将 CSV 列映射到 collection properties,或根据需要创建新的 properties。

最后点击 "Import" 按钮启动导入流程。你的第一个 CSV 文件就导入完成了。

导入第一个 CSV

步骤 2:指定用作唯一标识符的列

导入第一个 CSV 文件后,你可以在某个 collection property 上设置 "unique values" 约束。有了这个设置,Datablist 会在后续 CSV 导入时自动合并数据,并保持该约束有效。进入列配置,编辑将作为唯一标识符的 property。勾选 "Unique Values" 属性并保存。

为 property 添加 unique values 约束

步骤 3:导入一个或多个 CSV 文件

为 collection property 设置唯一约束后,就可以把其他 CSV 文件逐个导入到同一个 collection 中。在 CSV mapping 步骤中,如果需要,也可以创建新的 collection properties。

当 collection 已有 items,并且设置了唯一约束后,导入 CSV 文件时就可以选择合并方式。

Merging Mode
Merging Mode

选择数据如何合并到 collection 中:

  • Soft Merge:如果该 item property 已有数据,不要更新它。这是默认设置。
  • Hard Merge:如果该 item property 已有数据,更新它

注意: "Skip item" 选项会在 collection 中找到相同标识符值的条目时跳过该行。要合并 CSV 文件,不能选择这个选项。

CSV Join - Merging Options
CSV Join - Merging Options

步骤 4:按需导出为 CSV

完成了。🎉 你已经成功使用公共列合并了多个 CSV 文件。如果需要在其他工具中使用结果,点击 "Export" 按钮,把 collection 导出为新的 CSV 文件。

CSV Export
CSV Export

使用 Datablist 合并 CSV 文件的完整视频教程

在下面的视频中,property 的 "unique values" 设置是在创建 property 时直接完成的。

用 Datablist 按唯一列合并 CSV 文件

方案 2:用 Google Sheets 或 Excel 合并 CSV 文件

电子表格工具对按公共列合并 CSV 文件的支持比较有限。不过,单元格公式可以在另一张表中查找与某个值匹配的行。把这个公式应用到表格的每一行后,它就能在另一张表中搜索,并返回匹配行中任意列的值。

这个公式是 VLOOKUP,可用于 Microsoft ExcelGoogle Sheet

限制

  • 使用电子表格时,必须有一个 CSV 文件作为主表,并且它必须包含 join 列中的所有可能值
  • 在所有辅助表中,join 列必须是第一列。

步骤 1:导入你的 CSV 文件

说明: 本教程使用 Google Sheets(Microsoft Excel 中的 VLOOKUP 公式用法类似)。

在你的 CSV 文件中,选择包含最多值的文件作为主表。其他文件称为辅助 CSV 文件。

先使用 File -> Import 导入主 CSV 文件,并选择你的 CSV(如果要从电脑上传 CSV 文件,请进入 Upload 标签)。

Import Location 中,选择 Insert new sheet(s)

Load a CSV file in Google Sheets
Load a CSV file in Google Sheets

对辅助 CSV 文件也执行同样的操作。每个 CSV 文件都必须上传到电子表格中的独立工作表。

CSV files imported in Google Sheets
CSV files imported in Google Sheets

步骤 2:在主表中新建列

包含主 CSV 的表就是你的主表,它会接收其他表中的值。 在这张主表中,新建列来存放来自其他表的数据。

在本教程中,我们希望把辅助表中的 Job Title 数据加入主表,所以我们新增一个空的 Job Title 列。

New Job Title Column
New Job Title Column

步骤 3:将唯一列移到辅助表的第一列

VLOOKUP 公式会在目标表的第一列中查找匹配值。因此,在所有辅助表中(主表不需要这样做),请把用作 join column 的列移动到第一列。

Identifier Column must be the first column
Identifier Column must be the first column

步骤 3:使用 VLOOKUP 公式

最后一步是使用 VLOOKUP 公式,在其他表中查找匹配行,并显示该匹配行中的某一列。

该公式需要 3 个参数:

  • search_key - 要搜索的值。这里会使用唯一标识符所在行的值;
  • range - 搜索时要考虑的范围。范围中的第一列会用于查找 search_key 中指定的 key。 请把整个辅助表定义为 range(见视频)。
  • index - 要返回的列在匹配行中的列序号。range 中的第一列编号为 1。
  • is_sorted - [默认 TRUE] - 表示要搜索的列(指定 range 的第一列)是否已排序。大多数情况下建议使用 FALSE。 如果设置为 True,而你的数据没有排序,结果会出错!
VLOOKUP(search_key, range, index, [is_sorted])

观看下面的视频,了解如何使用 VLOOKUP 按唯一列合并数据:

用 Google Sheets 按唯一列合并 CSV 文件

在 Google Sheets 文档中了解更多 VLOOKUP 公式用法

对辅助表中的其他每一列重复同样操作 💪。