【问题标题】:C# - Comparing two CSV Files and giving an outputC# - 比较两个 CSV 文件并给出输出
【发布时间】:2010-08-11 12:46:33
【问题描述】:

需要一点帮助,我有两个信息来源,信息由不同的程序导出到两个不同的 CSV 文件。它们应该包含相同的信息,但这是需要检查的。

因此我想做的如下:

  • 从这两个文件中获取信息。
  • 比较
  • 输出任何差异以及差异所在的文件。(例如,文件 A 包含此内容,但文件 B 没有,反之亦然)。

这些文件有 200,000 奇数行,因此需要尽可能有效。

尝试使用 Excel 执行此操作,但事实证明太复杂了,我真的很难以编程方式找到方法。

【问题讨论】:

  • 如果您更具体地了解您希望找到的差异 - 数据差异还是格式差异,这会有所帮助?行数一样吗?等等……
  • 两个文件的顺序是否相同?解决方案有很大不同,具体取决于是否这样做。
  • 好的,抱歉。差异应该在数据中,有一列ID和一列版本。有不同的行数。格式相同,例如第一列中的 ID 具有 X 行数,第二列中的版本具有相同的行数。顺序不会相同,文件 A 中的一行在文件 B 中不会相同,或者尽管可能相同。描述需要做什么的简单方法可能是列出名称,但是它们没有排序,只是放入工作表中。我需要检查姓氏是否与名字相同。

标签: c# csv


【解决方案1】:

假设文件确实应该是相同,直到文本限定符、行的顺序以及每个文件中包含的行数,最简单的方法可能是简单地遍历两者将文件放在一起并比较每一行。

using (StreamReader f1 = new StreamReader(path1))
using (StreamReader f2 = new StreamReader(path2)) {

    var differences = new List<string>();

    int lineNumber = 0;

    while (!f1.EndOfStream) {
        if (f2.EndOfStream) {
           differences.Add("Differing number of lines - f2 has less.");
           break;
        }

        lineNumber++;
        var line1 = f1.ReadLine();
        var line2 = f2.ReadLine();

        if (line1 != line2) {
           differences.Add(string.Format("Line {0} differs. File 1: {1}, File 2: {2}", lineNumber, line1, line2);
        }
    }

    if (!f2.EndOfStream) {
         differences.Add("Differing number of lines - f1 has less.");
    }
}

【讨论】:

  • 谢谢,但只是添加了更多细节,因此这不起作用。还是谢谢!
  • 希望文件不是太大,或者您的笔记本电脑(或服务器)有大量内存。
【解决方案2】:

根据您对问题的 cmets 的回答,如果确实不需要使用代码来完成,您可能会比下载一个可能更复杂的比较工具做得更糟。

(例如Winmerge)

【讨论】:

    【解决方案3】:

    好的,对于任何在谷歌上搜索并找到它的人。这是我的答案。

    我将详细信息导出为 CSV,并在导出时按数字排序以方便使用。将它们导出为两个 CSV 文件后,我使用了一个名为 Beyond Compare 的程序,可以在 here 找到它。这允许比较文件。

    起初我手动使用 Beyond Compare 来测试我导出的内容是否正确等,但是 Beyond Compare 确实能够使用命令行进行比较。然后这会导致所有事情都以编程方式完成,所要做的就是用户在Beyond Compare 中查看结果。您也许可以将它们导出到另一个 CSV,我没有看到 Beyond Compare 的 GUI 非常好用,所以使用起来更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多