比较两个巨大的CSV文件进行更改的最快方法是什么?

时间:2012-11-08 14:06:32

标签: c# .net powershell architecture

我认为这是一个与架构和/或设计相关的问题:

我的场景是

  • 我将大量数据从Db导出到CSV。
  • 我经常这样做。
  • 我想检查上次导出的CSV数据是否与 以前导出数据的内容“

如何实现这一目标(无需逐行循环和比较)?

备注

  • 我的导出程序是.Net控制台应用程序。

  • 我的Db是MS-SQL(如果您需要知道)

  • 我的导出程序定期作为预定任务运行 - 在PowerShell脚本中运行

2 个答案:

答案 0 :(得分:6)

听起来您只想生成每个CSV文件的校验和以进行比较 Calculate MD5 checksum for a file

using (var md5 = MD5.Create())
{
    using (var stream = File.OpenRead(filename))
    {
        return md5.ComputeHash(stream);
    }
}

答案 1 :(得分:1)

您可以让数据库跟踪上次修改的时间。只需在该表中添加触发器,无论何时添加/删除/更新任何项目,您都可以将特定值设置为当前时间。然后,您不需要首先比较大文件;您的导出作业可以简单地查询上次修改的时间,将其与文件系统上文件的上次修改时间进行比较,并确定是否需要更新它。