web-dev-qa-db-ja.com

Google CloudStorageからcsvファイルを読み込むときにBigQueryエラーが発生する

csvに保存されているGCSファイルのデータをBigQueryに読み込もうとしています。 csvファイルはUTF-8形式で、7つの列が含まれています。これらの列をデータスキーム(すべての文字列とnull許容)で指定し、問題がないように見えるcsvファイルの内容を確認しました。

データを読み込もうとすると、次のエラーが発生します。

発生したエラーが多すぎます。 (エラーコード:無効)gs://gvk_test_bucket/sku_category.csv:CSVテーブルは列位置1を参照していますが、位置:1750384から始まる行には1列しか含まれていません。 (エラーコード:無効)

奇妙なことに、ファイルには680228行しか含まれていません。

allow jagged linesオプションをチェックすると、テーブルが生成されていますが、最初の列だけがコンマ区切りの文字列全体で埋められています。

誰かが私を助けることができますか?

行例

119470、ファッション、ファッション独自、メンズウェア、メンズウェアブランドその他、フォーマルシャツ、長袖シャツ

8
gvkleef

私にとっては、改行文字とキャリッジリターン文字の存在に関する問題でした。特殊文字を置き換えてみてください。以下のコードを使用して文字を置き換えたところ、読み込み部分が解決されました。

df= df.applymap(lambda x: x.replace("\r"," "))
df= df.applymap(lambda x: x.replace("\n"," "))

私の場合、どの列が文字列であるかわからないため、ラムダ関数を使用しました。列について確信がある場合は、列を賢く置き換えてください。

文字を置き換えてみてください。そうすれば、それもうまくいきます。

5
user8336233

区切り文字なしでファイルに空の行を含めることはできません。そうしないと、BigQuery(および他のほとんどすべての取り込みエンジン)はそれが1つの列であると見なします。

たとえば、これは行3で失敗し、次のエラーが発生します。

119470,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts,Long Sleeve Shirts

119471,Fashion,Fashion Own,Womenswear,Womensswear Brands Other,Formal Shirts,Long Sleeve Shirts

これは成功します:

119470,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts,Long Sleeve Shirts
,,,,,,,    
119471,Fashion,Fashion Own,Womenswear,Womensswear Brands Other,Formal Shirts,Long Sleeve Shirts
3
Graham Polley

空の行があります

119470,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts

119472,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts

または引用符付きの行

119470,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts
"119471,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts"
119472,Fashion,Fashion Own,Menswear,Menswear Brands Other,Formal Shirts

BigQueryの応答にバグがあると思います。エラーの行番号は、実際にはエラーの前の文字数です。

1
Marl