데이터베이스로 대량 가져 오는 동안 csv의 빈 필드 처리

c# csv idatareader sqlbulkcopy

문제

CSV 파일에서 지오 코드 데이터를 데이터베이스로 가져오고 있습니다.

다음 라이브러리를 사용했습니다. csv 를 읽고 SqlBulkCopy 를 사용 하는 빠른 csv 판독기

가져 오는 데이터의 예는 다음과 같습니다.

"AB10","1BH","L",0,0,,,20
"AB10","1BR","L",39320,80570,57.14214,-2.11400,21

좋은 데이터에서는 정상적으로 작동하지만 데이터베이스는 null 값을 허용하지 않기 때문에 예외가 발생합니다.

벌크 카피에 불량 데이터를 무시하도록 지시하는 방법이 있습니까? 나는 csv 리더가 라이브러리의 내장 된 속성을 사용하여 나쁜 라인을 무시하도록 노력했지만 작동하지는 않습니다.

csv.SkipEmptyLines = true;
csv.MissingFieldAction = MissingFieldAction.ParseError;
csv.DefaultParseErrorAction = ParseErrorAction.AdvanceToNextLine;

나는 또 다른 옵션을 CSV를 미리 구문 분석하고 모든 문제가있는 행을 제거하는 것이라고 생각합니다. 아마도 .net을위한 더 나은 CSV 라이브러리가있을 것입니다.

수락 된 답변

null 항목을 처리하기 위해 한 번에 DataTable 개체를 1000 개 항목으로 구문 분석 한 다음 가져온 항목을 가져 왔습니다.


인기 답변

csv 리더 코드를 게시 할 수 있다면 우리는 더 많은 것을 도울 수 있습니다. 그러나 링크 된 페이지에서 코드를 살펴보면 다음과 같이 할 수 있습니다.

while (csv.ReadNextRecord())
    {
        for (int i = 0; i < fieldCount; i++)
            Console.Write(string.Format("{0} = {1};",
                          headers[i],
                          csv[i] ?? "null"));
        Console.WriteLine();
    }

내가 null 누적 연산자를 추가 한 곳을 보시오. 그러면 출력이 다음과 같이 변경됩니다.

"AB10","1BH","L",0,0,,,20

"AB10","1BH","L",0,0,null,null,20


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.