【问题标题】:BigQuery error transferring csv from cloud storageBigQuery 错误从云存储传输 csv
【发布时间】: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 文件所执行的确切命令(或配置)?

标签: csv google-cloud-platform google-bigquery


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多