2010-11-24 4 views
1

나는 Lumenworks CSV 독자를 사용하고 나는 그것을 어떻게 지금까지 작동하는지에 관하여 아주 행복하지 않다는 것을 말해야한다.좋고 빠른 csv 독자

내가 시간 이내에 CSV 파일을 구문 분석 수천 해요 거기에 문제가 항상이든 나쁜 기록에 대해 불평 또는

당신이 잘 CSV 리더를 추천 할 수 등 열을 기울이기 예외가 발생, 그것은 나던 무료이지만 버그가 없다.

감사합니다.

+0

당신은 입력 파일은 특정 CSV 정말 있습니까? 파일을 데이터베이스로 가져온 다음 데이터를 사용할 수 있습니까? 예를 들어, MS SQL 대량 가져 오기는 다양한 종류의 CSV 파일을 쉽게 처리 할 수 ​​있으며 대용량 파일을 가져 오는 데 몇 초가 걸립니다. 이 시점부터 데이터베이스 테이블에서 데이터 작업을하고있는 것입니다. –

+0

파일을 구문 분석하고 처리해야합니다. 나는 DB에 일괄 삽입을 할 수 없습니다. parsin, lumenworks는 영원한 일로 많은 것을 허비합니다. – DarthVader

+0

동의합니다 ... 루멘은 항상 예외를 throw합니다 ... 우리가 필요로하는 것은 구분 된 줄을 읽는 단순한 독자 뿐이지 만 허위의 쓰레기는 없습니다 ... 단지 지긋 지긋한 줄을 읽어야합니다; D – Tommix

답변

0

입력 파일을 확인해야합니다.이 도구는 양질의 파일 (최대 파일을 처리하기 위해 잘못된 데이터 건너 뛰기)을 목표로하기 때문에 형식 검사시 중지되지 않는다고 생각합니다. 현실 세계에서는 깨끗한 CSV 스트림을 거의 볼 수 없습니다. 드라이버는 자신의 종류를 제공하는 경향이

대신 오류는 일반적으로 동일한 소스에서 온 생성하는 쉼표

파일의

- 세미 콜론을 인용 -no.

+0

괜찮아요 어떤 파일 형식이 좋습니다? – DarthVader

+0

Frank V는 잘못된 파일을 격리해야한다고 제안했습니다. CSV는 MS Access, 데이터베이스 내보내기 또는 사용자 정의로 만들어 집니까? 올바른 파일 형식은 표준 –

3

FileHelpers 오픈 소스 라이브러리 http://www.filehelpers.net/

+0

이 도움이되지 않았습니다. 구문 분석 오류. – DarthVader

+0

@ user177883, 원래 질문으로 돌아 오는 오류를 게시 할 수 있습니까? –

+0

오류를 무시하는 옵션을 전달할 수 있습니다. 그것이 작동하게 만든다. 그러나 그것은 매우 느립니다. – DarthVader

0

내가 그것을 사용하기 때문에 오랜 시간이,하지만 FileHelpers는 CSV 옵션의 많은 구문 분석 않습니다.

+0

didnt 도움, 또한 밖으로 배변한다. – DarthVader

+1

크랩 아웃을 정의 ...특정 유형의 오류가 발생했습니다. CSV 파일에 이상한 점이 있습니까? – Zachary

+0

크랩 아웃 = 충돌! 축하해. 심지어 filehelpers 사람들이 많이 부정적인 의견을 들었습니다, 그래서 놀랍지도 많이 들었습니다 ... – Timmerz

1

당신은 파일들로부터 예외 등을 받고 있음을 인용합니다. 이것들은 바람직하지 않을 수 있지만 그 원인을 조사해 보셨습니까?

테이블에있는 현재 파서 중 하나를 사용하고 예외가 발생하면 대안을 시도하거나 사용자 지정 코드로 시나리오를 처리 할 수 ​​있습니다. 나는 그것이 당신이 찾고있는 것과 정확히 다르다는 것을 알고 있지만 사용중인 도구가 아니라 도구가받는 입력이 문제 일 수 있습니다 ...

또한 코드를 사용하여 문제가되는 파일을 다른 디렉토리로 옮길 수도 있습니다. 조금 후에보고 처리 할 내용을 얻으십시오.

3

시도 CsvHelper (라이브러리를 유지 관리). NuGet에서도 사용 가능합니다.

1

.NET에 CSV 파서가 내장되어 있습니다. http://coding.abel.nu/2012/06/built-in-net-csv-parser/에서

:

// TextFieldParser is in the Microsoft.VisualBasic.FileIO namespace. 
using (TextFieldParser parser = new TextFieldParser(path)) 
{ 
    parser.CommentTokens = new string[] { "#" }; 
    parser.SetDelimiters(new string[] { ";" }); 
    parser.HasFieldsEnclosedInQuotes = true; 

    // Skip over header line. 
    parser.ReadLine(); 

    while (!parser.EndOfData) 
    { 
     string[] fields = parser.ReadFields(); 
     yield return new Brand() 
     { 
      Name = fields[0], 
      FactoryLocation = fields[1], 
      EstablishedYear = int.Parse(fields[2]), 
      Profit = double.Parse(fields[3], swedishCulture) 
     }; 
    } 
} 
+0

에 지정된대로 CSV를 따라야합니다. VB.Net 파서는 Lumenworks 파서보다 훨씬 느립니다. 우리의 테스트에서 Lumenworks 파서는 ~ 20 - 60 빠릅니다. –