处理内存中的大量 CSV 数据
Manipulating large set of CSV data in memory
我正在尝试处理导入到数据表中的大量数据(1000 万条记录)。我不认为数据表是在内存中操作大量数据的最有效方式。有没有人有更好的方法来做到这一点?我想要做的是利用 CSV 文件的内容来处理一些数据并将结果重新导出到另一个 CSV 文件中。
TIA,
保罗
A DataTable
将需要一次将整个内容加载到内存中。不要那样做。而是将输入和输出 csv 文件都视为流。这是一个非常好的 CSV reader,可让您一次阅读和处理一条记录:
A Fast CSV Reader
您想同时打开读取源和写入目标。当您从源读取一行时,对其进行处理,然后写入目标。内存中的内容永远不应超过一行或几行。这在内存使用和性能方面都将更加高效。
为了获得更高的性能,您可以使用单独的 reading/writing 线程和 producer/consumer 队列,但这需要更多的管理来确保队列不会饱和,具体取决于情况和相关情况read/process/write 性能,这个更复杂的解决方案可能根本不会提高性能。
我正在尝试处理导入到数据表中的大量数据(1000 万条记录)。我不认为数据表是在内存中操作大量数据的最有效方式。有没有人有更好的方法来做到这一点?我想要做的是利用 CSV 文件的内容来处理一些数据并将结果重新导出到另一个 CSV 文件中。
TIA, 保罗
A DataTable
将需要一次将整个内容加载到内存中。不要那样做。而是将输入和输出 csv 文件都视为流。这是一个非常好的 CSV reader,可让您一次阅读和处理一条记录:
A Fast CSV Reader
您想同时打开读取源和写入目标。当您从源读取一行时,对其进行处理,然后写入目标。内存中的内容永远不应超过一行或几行。这在内存使用和性能方面都将更加高效。
为了获得更高的性能,您可以使用单独的 reading/writing 线程和 producer/consumer 队列,但这需要更多的管理来确保队列不会饱和,具体取决于情况和相关情况read/process/write 性能,这个更复杂的解决方案可能根本不会提高性能。