解析大型CSV并对结果行进行流式处理

时间:2017-11-12 18:48:28

标签: c# csv

我试图读取大量的CSV文件(50M +行,~30列,多个千兆字节文件)。

这将在商用台式机规格机器上运行,因此将文件加载到内存中并不会削减它。在他们被解析时流式传输行似乎是最安全的选择。

为了让事情稍微有点兴趣,我只需要文件中的2列,但不保证字段的顺序,必须从列标题派生。

因此,返回每行或类似数组的迭代器非常好。

我不能在换行符上拆分,因为某些字段值可能跨越多行。我宁愿避免手动检查哪些字段被引用,适当地取消等等......

框架中有什么东西可以帮我吗?如果没有,有人可以给我一些关于如何最好地解决这个问题的提示吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试Cinchoo ETL - 一个用于读取和写入CSV文件的开源库

using (var reader = new ChoCSVReader("test.csv").WithFirstLineHeader()
    .WithField("Field1")
    .WithField("Field2")
)
{
   foreach (dynamic item in reader)
   {
      Console.WriteLine(item.Field1);
      Console.WriteLine(item.Field2);
   }
}

请查看CodeProject上有关如何使用文章的文章。

希望它能帮助您满足您的需求。

免责声明:我是这个图书馆的作者