2012-08-16 3 views
1

SQL 데이터베이스에서 .csv 파일을 가져오고 있습니다. TextFieldParser를 사용하고 있습니다.마지막 줄을 구문 분석하지 않는 TextFieldParser

내 코드는 작업 테이블이 DataTable에 있습니다

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 행 목록을로드하고 마지막 행을 저장하여 각 행을 구문 분석하십시오. 그렇지 않으면 요약 행을 식별 할 수있는 몇 가지 방법이 필요합니다. (예 : 날짜 같은 null 데이터) 파서가 해당 행을 무시하도록 신호를 보낼 수 있습니다.

가져 오기 용 데이터를 처리하는 가장 좋은 방법은 가져 오기 파일에 가져올 데이터 만 포함되도록 설정하는 것입니다. 불필요하게 많은 기업들이 실제 내보내기 파일 대신 보고서를 가져 오려고합니다.

+0

덕분에, 나는 구문 분석하는 마지막 행을 무시 하나 개의 신호를 뒀다. –

관련 문제