如何从BigQuery的CSV文件中跳过不良记录?我尝试使用以下功能:

configLoad.setMaxBadRecords(10);

configLoad.getMaxBadRecords();


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

最佳答案

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

作业返回其当前状态为:

  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"
  },

关于java - 忽略BigQuery中的不良CSV记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29530028/

10-10 04:21