我的工作失败并出现错误
行:14222274 /字段:1,遇到错误字符(ASCII 0)。其余文件未处理。
数据已压缩,我已确认文件中不存在ASCII 0字符。文件中只有14222273行,因此错误消息中打印的行号是超过文件末尾的一行。我有来自同一数据集的其他块已经成功上传,所以我怀疑这是一个BQ错误,或者错误消息并不表示潜在的问题。任何帮助解决这个问题将不胜感激。感谢。
>>> data = open("data.csv").read()
>>> chr(0) in data
False
>>> data[-1]
'\n'
答案 0 :(得分:2)
我遇到了类似的问题,尝试在BigQuery中加载一个压缩文件(将其保存在Google云端存储中)。这些是日志:
File: 0 / Offset:4563403089 / Line:328480 / Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) File: 0 / Offset:4563403089 / Line:328485 / Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) File: 0 / Offset:4563403089 / Line:328490 / Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) File: 0 / Offset:4563403089 / Line:328511 / Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) File: 0 / Offset:4563403089 / Line:328517 / Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid)
为了解决问题,我所做的就是从压缩文件中删除ASCII 0字符。为此,我从安装了sdk的Compute Engine实例执行了以下commnad:
gsutil cp gs://bucket_987234/compress_file.gz - | gunzip | tr -d '\000' | gsutil cp - gs://bucket_987234/uncompress_and_clean_file
通过使用管道,我避免了硬盘上的所有存储(1G压缩+ 52G解压缩)。第一个程序从Storage获取压缩文件,第二个程序解压缩它,thrid删除ASCII 0字符,第四个程序将结果更新为存储。
当我再次上传到Storage时,我不会压缩结果,因为BigQuery可以更快地加载未压缩的文件。之后,我可以毫无问题地加载BigQuery数据。
答案 1 :(得分:1)
当你压缩你使用的实用程序时?。
当我以ZIP格式(在Windows中)压缩我的csv文件时,我看到了这个问题。 Google BigQuery似乎只接受gzip格式。
确保使用gzip压缩CSV。如果你在Windows 7-zip是一个很棒的实用工具,它允许你压缩gzip。
在Unix中,gzip是标准的。
答案 2 :(得分:0)
遇到错误字符(ASCII 0)。其余文件未处理。
清楚地说明你有一个无法解码的UTF-16字符。 BigQuery服务仅支持UTF-8和latin1文本编码。因此,该文件应该是UTF-8编码。
文件中只有14222273行,所以行号是 在错误消息中打印的是超过文件末尾的一行。
您可能在文件末尾有一个UTF-16编码制表符,无法解码。
解决方案:在-a
命令中使用--ascii
或gzip
标志。它将被bigquery
解码为ok。