忽略 BigQuery 中的错误 CSV 记录

Posted

技术标签:

【中文标题】忽略 BigQuery 中的错误 CSV 记录【英文标题】:Iignore a bad CSV record in BigQuery 【发布时间】:2015-04-09 04:51:55 【问题描述】:

如何在 BigQuery 中跳过 CSV 文件中的不良记录?我尝试过使用这些功能:

configLoad.setMaxBadRecords(10);

configLoad.getMaxBadRecords();

我在输入 CSV 中有一条不良记录。但是当我使用上面的函数时代码返回null并且代码失败而不是忽略坏记录。

【问题讨论】:

您能否提供更多有关您的 csv 记录外观的信息?也许带有其类型的样本记录将有助于更好地分析。 在 CSV 文件中,我插入了一个额外的列。就像他们应该是文件中的 4 个字段,但我插入了一个额外的列。例如 (abc,bcd,1,2,4) 改进语法和格式,使问题更清晰 【参考方案1】:

我怀疑这里的问题在于如何检查成功与错误。

作业返回其当前状态为:

  state: PENDING|RUNNING|DONE
  errorResult:  ... 
  errors: [..., ..., ...]

当作业处于DONE 状态时,errorResult 确定作业总体上是成功(不存在 errorResult)还是失败(errorResult 字段中的结构化错误)。

errors 列表中的错误将包含遇到的所有致命和非致命错误。

这是一个成功完成的加载作业的示例状态结果,其中包含 1 个错误行,并在加载作业配置上设置了 setMaxBadRecords(10):

"status": 
    "errors": [
      
        "location": "File: 0 / Line:1", 
        "message": "Too many columns: expected 2 column(s) but got 3 column(s). For additional help: http://goo.gl/RWuPQ", 
        "reason": "invalid"
      
    ], 
    "state": "DONE"
  , 

如果没有 setMaxResults,这将是一个失败的工作,如下所示:

"status": 
    "errorResult": 
      "message": "Too many errors encountered. Limit is: 0.", 
      "reason": "invalid"
    , 
    "errors": [
      
        "location": "File: 0 / Line:1", 
        "message": "Too many columns: expected 2 column(s) but got 3 column(s). For additional help: http://goo.gl/RWuPQ", 
        "reason": "invalid"
      , 
      
        "message": "Too many errors encountered. Limit is: 0.", 
        "reason": "invalid"
      
    ], 
    "state": "DONE"
  , 

【讨论】:

以上是关于忽略 BigQuery 中的错误 CSV 记录的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 错误从云存储传输 csv

列中的 BigQuery 日期分区

将 CSV 文件从 Google Drive 加载到 BigQuery 会产生零行且没有错误

将 CSV 导入 BigQuery 中的表时无法添加字段

将CSV加载到BigQuery表中的问题

将 BigQuery 查询结果行写入 csv 文件时,某些记录重复