use*_*062 6 c# csv file random-access
我有一个10GB的CSV文件,它本质上是一个巨大的方阵.我正在尝试编写一个能够尽可能有效地访问矩阵的单个单元格的函数,即矩阵[12345,20000].
鉴于它的大小,显然不可能将整个矩阵加载到2D数组中,我需要以某种方式直接从文件中读取值.
我用谷歌搜索文件随机访问使用FileStream.Seek,但不幸的是由于变量舍入每个单元格不是固定的宽度.我不可能寻找一个特定的字节,并通过某种算术知道我正在看什么单元格.
我考虑扫描文件并为每行的第一个字节的索引创建一个查找表.这样,如果我想访问矩阵[12345,20000],我会寻找行12345的开头,然后扫描整行,计算逗号直到我到达正确的单元格.
我即将尝试这个,但还有其他人有更好的想法吗?我敢肯定,我不会是第一个尝试处理这样一个文件的人.
干杯
编辑:我应该注意该文件包含一个非常稀疏的矩阵.如果解析CSV文件的速度太慢,我会考虑将文件转换为更合适,更容易处理的文件格式.存储稀疏矩阵的最佳方法是什么?