---
title: "如何比较 CSV 文件，或者如何将 CSV 文件与数据库表进行比较"
date: "2022-05-04"
categories: 
  - "data-integration"
  - "database"
  - "tools"
tags: 
  - "compare-csv"
  - "compare-data"
  - "diff-merge-tool"
  - "diffdog"
  - "diffdog-server"
description: 比较 CSV 文件与其他 CSV 文档或数据库表是一个常见的需求。了解 DiffDog 如何让这个过程变得简单。

---
Status: #blog

Tags:  #compare-csv #compare-data #diff-merge-tool #diffdog #diffdog-server

Categories: [data-integration](/blog/zh/category/data-integration.md) | [database + sql](/blog/zh/category/database-sql.md) 
# 如何比较 CSV 文件，或者如何将 CSV 文件与数据库表进行比较

CSV文件是一种快速便捷的方式，用于以通用格式记录结构化数据。由于CSV文件非常容易创建，因此很容易出现大量相似的、体积庞大的CSV文件。在很多情况下，需要比较不同的CSV文件，以找到所需版本。在ETL（数据抽取、转换、加载）场景中，数据分析师可能需要将一个CSV文件与数据库表进行比较，以进行验证或更新数据。

Altova 公司的 DiffDog 是一款独特的、具有 XML 识别功能的差异比较和合并工具，它支持 CSV 作为一种原生文件格式，可用于比较和合并 [比较并选择性地合并数据](https://www.altova.com/zh/diffdog) 可以将 CSV 文件转换为 CSV 文件，或者在 CSV 文件和数据库表之间进行转换。 让我们来看一个例子。

![](/blog/images/107839721_700px.jpg)

<!--more-->

由于CSV文件包含结构化数据，因此可以使用DiffDog的“比较数据库数据”功能来比较CSV文件。用户可以通过“文件”菜单或工具图标来启动此功能。这将打开一个新的比较窗口，用户可以在其中选择用于比较的左右两个对象。

[![将CSV文件与其他结构化数据进行比较](/blog/images/open-compare-csv.png)](open-compare-csv.png)

请注意，DiffDog 允许您比较 CSV 文件，这些文件可以使用逗号、制表符或分号作为列分隔符，并且可以比较带有或不带有标题行的文件。

在下面的截图所示界面中，用户选择了左右两个比较文件，并将这两个文件在顶层进行了映射，以便比较所有列。用户通过点击工具栏右上角绿色“比较”工具图标来执行比较操作。

[![轻松识别两个CSV文件是否完全相同或存在差异。](/blog/images/compare-csv-result.png)](compare-csv-result.png)

请注意，在连接链接中的对象名称附近，会显示每个文件的行数。这两个CSV文件虽然行数相同，但内容并不完全一致。列名会显示在每个对象名称下方。您可以取消选择任何单独的连接，以避免对该列进行比较。

接下来，我们想查看这些 CSV 文件之间的具体差异。右键单击不相等的连接线，会弹出一个菜单，其中包含一个选项，可以查看详细结果。

[![比较 CSV 文件，并查看详细结果](/blog/images/open-detailed-results.png)](open-detailed-results.png)

结果窗口会详细显示这两个文件。

[![CSV 文件比较结果的详细视图](/blog/images/csv-compare-results-1.png)](csv-compare-results-1.png)

位于顶部的导航工具栏可以帮助您快速找到文件中第一个不同之处。例如，可能客户编号为544的订单信息被错误录入，需要重新归类到不同的区域和销售代表。

您可以通过右键单击上下文菜单，选择并合并各个CSV文件之间的差异

[![比较 CSV 文件并合并差异](/blog/images/detailed-csv-compare-results-1.png)](detailed-csv-compare-results-1.png)

您可以合并两种方向上的差异，并将结果保存。保存方式有两种：一是更新现有的CSV文件，二是保存为具有新名称的新文件。

### 比较 CSV 文件与数据库表

要进行 CSV 文件与数据库的比较，只需使用连接向导，将数据库指定为比较对象，分别放置在比较的左右两侧即可。下图展示了我们原始的 CSV 文件（位于左侧）和一个 SQLite 数据库（位于右侧）。

[![比较 CSV 文件和数据库表](/blog/images/csv-to-database-comparison.png)](csv-to-database-comparison.png)

在这个例子中，CSV文件和数据库表中的内容是相同的。如果存在差异，上述所有将CSV文件与其他CSV文件进行比较并合并的功能，同样适用于将CSV文件与数据库表进行比较。您可以直接从结果窗口将对数据库表的任何更改立即提交到数据库。

支持的数据库包括：

• 凤凰 (Fènghuáng)

• IBM DB2 for iSeries® 系统

• IBM DB2® 数据库系统

• Informix® (一种数据库管理系统)

• MariaDB数据库系统

• Microsoft Access™ 数据库管理系统

• Microsoft® Azure SQL数据库服务

• Microsoft® SQL Server® 数据库系统

• MySQL®

• Oracle® (甲骨文公司)

• PostgreSQL数据库系统

• Progress OpenEdge 产品进展

• SQLite

• Sybase® 数据库高级版 (ASE)

• Teradata (特拉达)

### 使用 DiffDog 服务器自动化 CSV 文件比较

您可以使用 DiffDog Server 来[自动生成差异报告](https://www.altova.com/zh/diffdog-server)，用于比较 CSV 文件之间的差异，以及 CSV 文件与数据库之间的差异。一旦在您的网络中的一台机器上安装了 DiffDog Server，它将作为一个服务运行。您可以通过命令行界面或可执行脚本来调用 DiffDog Server，从而执行比较操作。

如果您需要频繁地进行相同的数据比较，您可以在 DiffDog 中设置一次，并将配置保存为数据库数据比较 (.dbdif) 文件。DiffDog Server 可以自动执行这些配置。

DiffDog 服务器适用于 Windows、Windows Server、Linux 和 macOS 平台。

[下载免费试用版](https://www.altova.com/zh/diffdog/download)，亲自体验 DiffDog 如何轻松帮助您比较 CSV 文件！
