从网络驱动器快速读取CSV

时间:2011-04-17 09:53:04

标签: c#

我在网络驱动器上有一个csv平面文件系统,在任何时候我都可以读取大约500-600个csv文件,每个文件有几千行。我目前正在使用以下代码进行阅读,

var parser = new TextFieldParser(fileName) {TextFieldType = FieldType.Delimited};
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
    var fields = parser.ReadFields();
}

但即使这需要很长时间。我正在寻求加快速度。任何人都可以提出建议。

2 个答案:

答案 0 :(得分:2)

我在Codeplex上的这个CSV parser取得了不错的成绩。

但我强烈建议您分析一下代码,找出真正的瓶颈在哪里,网络驱动器,CSV解析器或解析后的数据处理。

<强>更新

识别瓶颈的一种非常实用的方法可能是衡量以下任务的总执行时间:

  1. 使用Windows文件浏览器将文件从网络驱动器复制到本地驱动器(数据传输时间)。

  2. 使用简单的.NET程序从网络驱动器读取文件,例如使用 StreamReader 类(从.NET程序传输数据的时间)。

  3. 使用CSV解析器从网络驱动器读取和解析文件(数据传输的时间加上解析时间)。

  4. 使用CSV解析器读取,解析和处理文件以及数据处理所需的任何内容(数据传输的时间加上解析时间加上处理时间)。

  5. 有了这些数字,就应该很容易找出最大的改进潜力所在。根据您花费最多时间的步骤,您可以查看网络基础架构,尝试使用不同的CSV解析器或进一步分析数据处理花费最多时间的位置。

答案 1 :(得分:0)

好吧,我不确定如何与“相当长”进行比较,但我使用Lumen CSV获得了很好的体验,{{3}}是一个基于流的,仅向前的csv解析器。