我试图读取大量的CSV文件(50M +行,~30列,多个千兆字节文件)。
这将在商用台式机规格机器上运行,因此将文件加载到内存中并不会削减它。在他们被解析时流式传输行似乎是最安全的选择。
为了让事情稍微有点兴趣,我只需要文件中的2列,但不保证字段的顺序,必须从列标题派生。
因此,返回每行或类似数组的迭代器非常好。
我不能在换行符上拆分,因为某些字段值可能跨越多行。我宁愿避免手动检查哪些字段被引用,适当地取消等等......
框架中有什么东西可以帮我吗?如果没有,有人可以给我一些关于如何最好地解决这个问题的提示吗?
答案 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上有关如何使用文章的文章。
希望它能帮助您满足您的需求。
免责声明:我是这个图书馆的作者