>source

다른 시스템에서 다운로드 한 CSV 데이터를 사용하여 Google BigQuery에서 테이블을 만드는 데 어려움이 있습니다.

목표는 Google Cloud Platform에 한 달에 1 CSV 파일을 업로드 할 버킷을 만드는 것입니다. 이 CSV 파일에는 월에 따라 약 3,000-10,000 행의 데이터가 있습니다.

Big Query API의 작업 기록에서 오류가 발생했습니다. 데이터를 읽는 동안 오류가 발생했습니다. 오류 메시지 : CSV 테이블에 너무 많은 오류가 발생하여 포기했습니다. 행 : 2949;errors : 1. 자세한 내용은 errors [] 컬렉션을 참조하십시오.

CSV 파일을 업로드 할 때 다음을 선택합니다.  -파일 형식 : csv  -테이블 유형 : 기본 테이블  -자동 감지 : 자동 및 수동 시도  -파티셔닝 : 파티셔닝 없음  -쓰기 환경 설정 : WRITE_EMPTY (변경할 수 없음)  -허용되는 오류 수 : 0  -알 수없는 값 무시 : 선택하지 않음  -필드 구분 기호 : 쉼표  -건너 뛸 헤더 행 : 1 (또한 ​​0을 시도하고 csv 파일에서 헤더 행을 수동으로 삭제)

어떤 도움이라도 대단히 감사하겠습니다

감사합니다,

  • 답변 # 1

    예제 CSV 파일을 보지 않고 오류를 지적하는 것은 불가능하지만 파일 형식이 잘못되었을 가능성이 큽니다. 결과적으로 한 오타로 인해 BQ가 수천 명이라는 생각을 혼동합니다. 다음 CSV 파일이 있다고 가정 해 봅시다.

    Sally Whittaker,2018,McCarren House,312,3.75
    Belinda Jameson 2017,Cushing House,148,3.52 //Missing a comma after the name
    Jeff Smith,2018,Prescott House,17-D,3.20
    Sandy Allen,2019,Oliver House,108,3.48
    
    

    다음 스키마 사용 :

    Name(String)    Class(Int64)    Dorm(String)    Room(String)    GPA(Float64)
    
    

    스키마에 쉼표가 없기 때문에 모든 것이 한 열 위로 이동합니다. 큰 파일이 있으면 문자열을 Ints/Floats에 삽입하려고 시도 할 때 수천 개의 오류가 발생합니다.

    CSV 파일을 BQ에 업로드하기 전에 CSV 검사기를 통해 CSV 파일을 실행하는 것이 좋습니다. 고장난 것을 발견 할 수 있습니다. 필드 중 하나에 값 안에 쉼표가있어 모든 것을 깨뜨릴 수도 있습니다.

    조사 할 다른 이론은 모든 필수 열이 적절한 (널이 아닌) 값을 받도록하는 것입니다. 이 오류의 일반적인 원인은 데이터를 잘못 캐스팅하여 모든 행의 특정 필드에 대해 null 값을 반환하는 경우입니다.

  • 답변 # 2

    Scicrazed에서 언급했듯이 일부 파일 행의 형식이 잘못되어이 문제가 발생하는 것 같습니다.이 경우에는 발생하는 특정 오류를 파악하기 위해 콘텐츠 데이터의 유효성을 검사해야합니다. 이 문제.

    errors[] collection 를 확인하는 것이 좋습니다  여기에는 프로세스 실패를 유발할 수있는 측면에 대한 추가 정보가 포함될 수 있습니다. BigQuery 작업에 대한 자세한 정보를 리턴하거나 additionalErrors 를 참조하는 Jobs : get 메소드를 사용하여이를 수행 할 수 있습니다.  서비스에서보고 한 것과 동일한 전체 오류 데이터가 포함 된 JobStatus Stackdriver 로그의 필드입니다.

  • 답변 # 3

    아마 너무 늦었지만 파일에 오류가있는 것 같습니다. 구문 분석 할 수없는 문자 또는 int 열의 문자열)) BigQuery에서 자동으로 업로드 할 수 없습니다.

    오류가 무엇인지 이해하고 어떻게 든 고쳐야합니다. 가장 쉬운 방법은 터미널에서 다음 명령을 실행하는 것입니다.

    bq --format=prettyjson show -j <JobID>
    
    

    문제를 이해하는 데 도움이되는 오류에 대한 추가 로그를 볼 수 있습니다.

    오류가 몇 번만 발생하면 허용되는 오류 수를 늘릴 수 있습니다. 여러 번 발생하는 경우 업로드하기 전에 CSV 파일을 조작해야합니다.

    도움이 필요합니다

  • 답변 # 4

    보통은 데이터 소스 구조 (이 경우 CSV 파일)의 오류를 가리 킵니다. CSV 파일이 작으므로 내보내기를 실행하기 전에 약간의 유효성 검사 스크립트를 실행하여 CSV의 모든 행에서 열 수가 정확히 동일한 지 확인할 수 있습니다.

    아마도 :

    cat myfile.csv | awk -F, '{ a[NF]++ } END { for (n in a) print n, "rows have",a[n],"columns" }'
    
    

    또는 조건에 바인딩 할 수 있습니다 (열 수가 5 여야한다고 말하자).

    ncols=$(cat myfile.csv | awk -F, 'x=0;{ a[NF]++ } END { for (n in a){print a[n]; x++; if (x==1){break}}}'); if [ $ncols==5 ]; then python myexportscript.py; else echo "number of columns invalid: ", $ncols; fi;
    
    

  • 이전 mod auth openidc - 리버스 프록시에서 Keycloak/mod_auth_openidc
  • 다음 angular - 관찰 가능한`of`는 더 이상 사용되지 않습니다 동등한 것은 무엇입니까?