\x96 不是 BigQuery 中的有效 UTF-8 字符串

Posted

技术标签:

【中文标题】\\x96 不是 BigQuery 中的有效 UTF-8 字符串【英文标题】:\\x96 is not a valid UTF-8 string in BigQuery 【发布时间】:2019-08-15 14:35:47 【问题描述】:

当“-”(破折号)字符用于以竖线分隔的 csv 文件时,我们发现 BigQuery 会产生无效的 utf-8 错误。奇怪的是,这些字符位于已有一年多的文件中,没有更改,而且 BigQuery 已经读取这些文件好几个月了,直到几天前。这是其中一个错误的示例。

Christus Trinity Clinic \\x96 Rheumatology is not a valid UTF-8 string

字符串在原始文件中的样子是这样的:

Christus Trinity Clinic – Rheumatology

是否有人知道此问题的解决方法,或者 BigQuery 是否以可能导致此问题的方式更改了它的功能?我知道我可以上传一个更正后的文件,但在这种情况下,不应出于审计目的而更改文件。

【问题讨论】:

您如何将这些文件上传到 BQ?直接来自GCS?主机使用 Python 客户端? Apache Beam? 这些文件存储在 Google Storage 中,并由 BigQuery 作为外部表读取。 如果这看起来像一个错误,请在 bigquery 问题跟踪器上分享作业 ID 和文件位置。特别是如果这些文件没有改变,但行为已经改变。 自 8 月 13 日星期二以来,我们面临着完全相同的问题。显然,bq 加载 csv 文件的行为似乎发生了变化 我在这里打开了一个新的问题项目:issuetracker.google.com/issues/139511264 【参考方案1】:

我从 8 月 14 日开始遇到同样的问题。 我正在使用gsutil 将 csv 加载到 bigquery 中。

我在加载 csv 时使用了编码选项,它对我有用。

编码:

--encoding ISO-8859-1

命令行:

bq --location=US load --skip_leading_rows=1 --encoding ISO-8859-1 --replace --source_format=CSV gcs.dim_employee

【讨论】:

【参考方案2】:

从昨天开始,我们看到同样的事情突然发生了。 对我来说,解决方案是在 loadconfig 中添加编码类型。 (我用的是php客户端,但你的客户端可能也有这个选项)

$loadConfig->encoding('ISO-8859-1');

【讨论】:

仅供参考,如果您在 google cloud slack 上,我打开了一个关于此 here 的对话。到目前为止,一位用户也提出了同样的问题。

以上是关于\x96 不是 BigQuery 中的有效 UTF-8 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Spark BigQuery 连接器:写入 ARRAY 类型会导致异常:“”无效值:ARRAY 不是有效值“”

按最新日期过滤 BigQuery 行的最有效方法

删除utf8范围之外的数据

将 TFHUB 中的 TensorFlow 模型加载到 BigQuery 中

BigQuery 无法识别分区表谓词

BigQuery / DataPrep:提取字数的有效方法;将 HTML 转换为纯文本