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、ファッション、ファッション独自、メンズウェア、メンズウェアブランドその他、フォーマルシャツ、長袖シャツ
私にとっては、改行文字とキャリッジリターン文字の存在に関する問題でした。特殊文字を置き換えてみてください。以下のコードを使用して文字を置き換えたところ、読み込み部分が解決されました。
df= df.applymap(lambda x: x.replace("\r"," "))
df= df.applymap(lambda x: x.replace("\n"," "))
私の場合、どの列が文字列であるかわからないため、ラムダ関数を使用しました。列について確信がある場合は、列を賢く置き換えてください。
文字を置き換えてみてください。そうすれば、それもうまくいきます。
区切り文字なしでファイルに空の行を含めることはできません。そうしないと、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
空の行があります
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の応答にバグがあると思います。エラーの行番号は、実際にはエラーの前の文字数です。