2012-08-16 37 views
1

我在我的sql数据库中导入.csv文件。我正在使用TextFieldParser。TextFieldParser不解析最后一行

我的代码是

TextFieldParser parser = new TextFieldParser(file); 
//single file 
//TextFieldParser parser = new TextFieldParser(CSVFolderPath + "\\" + file); 
parser.TextFieldType = FieldType.Delimited; 
parser.SetDelimiters(","); 
int k = 0; 
while (!parser.EndOfData) 
{ 
    //Processing row 
    string[] fields = parser.ReadFields(); 
    if (k != 0) 
    { 
     for (int i = 0; i < fields.Length; i++) 
     { 
      stationcode = fields[0].ToString().Substring(4, 5); 
      //if (fields[1].ToString().Substring(14, 8) == date) 
      //{ 
      if (i == 0) 
      { 

       dr = workTable.NewRow(); 
       dr[i] = fields[i].Substring(0, fields[i].Length - 4); 

      } 
      else if (i == 3) 
      { 
       dr[i] = Convert.ToDateTime(fields[i].ToString()); 
      } 
      else if (i == 4) 
      { 
       dr[i] = Convert.ToDateTime(fields[i].ToString()); 
      } 
      else if (i == 5) 
      { 
       dr[i] = Convert.ToInt32(fields[i].ToString()); 
      } 
      else 
       dr[i] = fields[i].ToString(); 
      if (i == 5) 
      { 
       workTable.Rows.Add(dr); 
      } 
      //} 

     } 
    } 
    k = k + 1; 
} 
parser.Close();  

这里工作台是数据表。

代码解析文件正常。

但在我的csv文件最后一行用于摘要。一些字段的总数。

我不想包括该行插入数据表。

我该怎么做?

回答

0

如果内存空间不成问题。首先加载CSV行的列表,然后解析每行并保存最后一行。否则,您需要某种方法来识别汇总行。 (比如像日期那样的空数据),这可以指示解析器忽略该行。

处理导入数据的最佳方法是尝试确定导入文件将只包含要导入的数据。 (没有标题,没有摘要等)不幸的是,很多公司都试图导入Reports而不是实际的导出文件。

+0

,谢谢,我已经把忽略最后一行来分析一个信号。 – 2012-08-16 07:46:30