无法通过字段将\“提取到BigQuery中

时间:2019-09-20 20:44:41

标签: google-cloud-platform google-bigquery

我每天有成千上万的压缩CSV文件写入S3。它们包含逗号分隔的字段,每个字段都用双引号引起来(无论数据类型如何)。但是,字段中包含的双引号使用\而不是RFC4180标准"进行转义,如下所示:

header1,header1,header3
"1","Look some text.","43.7"
"2","27\" TV","29.1"
"3","More things","99.0"

这对于Amazon Athena或使用反序列化器可让您指定引号/转义符的其他产品很好用。但是,BigQuery无法提取此数据。我收到错误消息:

Error: Data between close double quote (\") and field separator.

当我尝试时,这是有道理的。我无法更改底层数据结构(由另一项服务编写),将configuration.load.quote参数设置为未使用的字符会导致我解析错误,并且无法启动Cloud SQL实例仅充当对此的解析器(我每天要处理TB的数据。

我认为将quote char设置为\"可能有用,但是BQ API仅允许该字段使用单个字符。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我了解痛苦,并感谢您提供额外的动力!

正如我在帖子(https://medium.com/google-cloud/loading-mysql-backup-files-into-bigquery-straight-from-cloud-sql-d40a98281229上所解释的那样,我现在发现解决此问题的最简单方法是使用MySQL。

有关Stack Overflow的其他问题还显示了替代路径,例如使用Dataflow进行预处理,bash工具和/或在BigQuery内部。

对于产品功能的开发,请订阅并投票解决此问题-添加您的评论也将非常有价值:

要在BigQuery中进行解析,请尝试将每行原始加载并像这样运行UDF:

#To Click on Sign Up
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='container']//ul[@class='dropdown-menu']//a[contains(.,'Sign Up')]"))).click() 

参考:https://medium.com/@hoffa/new-in-bigquery-persistent-udfs-c9ea4100fd83

enter image description here