在内存中处理大量CSV数据

时间:2015-07-29 05:13:23

标签: c# performance datatable

我正在尝试操作已导入数据表的大型数据集(1000万条记录)。我认为数据表不是操作内存中大量数据的最有效方法。有没有人有更好的方法这样做?我要做的是将CSV文件的内容操作一些数据并将结果重新导出到另一个CSV文件中。

TIA, 保罗

1 个答案:

答案 0 :(得分:0)

DataTable需要立即将整个内容加载到内存中。不要这样做。而是将输入和输出csv文件视为流。这是一个非常好的CSV阅读器,可以让您一次阅读和处理一条记录:

  

快速CSV阅读器

     

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

您想要同时打开阅读源和写入目的地。当您从源中读取一行时,处理它,然后写入目标。你的内存中永远不应该有一行或几行。这在内存使用和性能方面都会更有效。

为了获得更高的性能,您可以使用单独的读/写线程和生产者/消费者队列,但这需要更多的管理来确保队列不会饱和并且取决于具体情况和相对读取/处理/写性能,这个更复杂的解决方案可能根本不会提高性能。