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

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に記述されて、どこかで何かがこけちゃうぞ!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.