BigQuery 错误从云存储传输 csv

Posted

技术标签:

【中文标题】BigQuery 错误从云存储传输 csv【英文标题】:BigQuery error transferring csv from cloud storage 【发布时间】:2021-06-10 12:55:33 【问题描述】:

我正在尝试在 bigquery 中创建一个表,从谷歌存储中传输一个 csv。这个 csv 有 3000 万行,我得到了这些错误,例如:

“读取数据时出错,错误消息:从位置 254333656 开始的行中的值过多。找到 4 列,而预期为 3”

“读取数据时出错,错误消息:从位置 254312106 开始的行中的值过多。找到 4 列,而预期为 3。”

这很尴尬,我的 csv 中没有所有这些行。它在第 2.5 亿行发现了一个错误。怎么可能?

谢谢

【问题讨论】:

您能否检查一下 csv 文件是否为 UTF-8 格式,或者您能否提供有关加载过程的更多详细信息? 是的,文件是 UTF-8。这是我从中下载 csv 文件 zenodo.org/record/2539424 的 lin,它是“itwiki.wikilink_graph.2018-03-01.csv.gz”文件。我无法在 libreoffice 上的笔记本电脑上打开它,我只是用文本编辑器扫描了一下。它有四列,描述***页面和每个页面的链接。您是否认为问题可能是某些单元格包含引号?我真的真的不知道可能是哪个问题 是的,引号可能是个问题。顺便说一句,我认为您提到的位置编号 - 不是行号,而是文件开头的字符(或字节)编号。 您无法打开文件,但您可以在 linux 上执行 head(例如在 Cloud Shell 上)。您可以粘贴第 3 行(head -3 )向我们展示结构吗?此外,您在 BigQuery 中提取 csv 文件所执行的确切命令(或配置)? 【参考方案1】:

错误表明position 254333656 存在问题,而不是row

这意味着错误位于距离文件开头 254333656 个字符处(这使得调试非常困难)。

为了解决您的问题,您可以:

检查您的标题是否确实有 4 列(BQ 似乎期望 3 列,但您说您期望 4)

也许可以在您的 bq 加载语句中尝试使用标志 --allow_jagged_row=true。

【讨论】:

以上是关于BigQuery 错误从云存储传输 csv的主要内容,如果未能解决你的问题,请参考以下文章

使用云功能从云存储中将数据加载到BigQuery中(替代功能?)

将 csv 文件从云存储加载到大查询

从云存储桶加载数据时未找到数据集错误

400 Bad Request 错误尝试从云存储加载 bigquery 表

如何使用 ruby​​ api 创建一个 bigquery 表并从云存储导入

Google bigquery 数据传输服务标头问题