Google BigQueryのCSVロードでMissing close double quote (") character.

  • 0
    いいね
  • 0
    コメント

    S3にCSVファイルが置かれたら、ファイルをBigQueryにアップロードするタスクを仕掛けていたら、ある日を境にこけ始めた。

    $ bq load --skip_leading_rows=1 --replace --sync --project_id mypj ...[以下省略]
    Upload complete.
    Waiting on bqjob_r42fb5f95fa2e4847_0000015a213d6a98_1 ... (89s) Current status: DONE   
    
    BigQuery error in load operation: Error processing job 'amimoto-dashboard:bqjob_r42fb5f95fa2e4847_0000015a213d6a98_1': Too many errors encountered.
    Failure details:
    - /gzip/subrange/file-00000000: Error detected while parsing row
    starting at position: 250878765. Error: Missing close double quote
    (") character.
    

    Missing close double quote。なんでやねんと思って調査。

    改行。

    csvファイルの行数は1,117,796、pandasでロードしたらレコード数は1,117,768。。。??

    で、あるカラムに改行を発見。

    "foobarstring\n"
    

    なるほど。

    --allow_quoted_newlinesをつけて対応できるケースだった

    $ bq load --skip_leading_rows=1 --allow_quoted_newlines --replace --sync --project_id mypj ...[以下省略]
    
    Upload complete.
    Waiting on bqjob_r1680e9a9697238aa_0000015a214b406d_1 ... (168s) Current status: DONE  
    

    ちなみに改行が混入したのはAWSの請求データで、user:Nameとされているカラムでした。リソースタグに\nとか入れたら請求のCSVに記述されて、どこかで何かがこけちゃうぞ!