此错误是什么意思:列索引所需的列值:从位置开始的行中缺少 8:0

What does this error mean: Required column value for column index: 8 is missing in row starting at position: 0

我正在尝试使用 gcloud CLI BQ Load 命令将 CSV 文件(BCP 命令的输出)上传到 BigQuery。我已经上传了自定义架构文件。 (自动检测存在重大问题)。

一个资源建议这可能是 datatype mismatch。但是,SQL 数据库中的 table 将该列列为小数,因此在我的架构文件中我将其列为 FLOAT,因为小数不是受支持的数据类型。

我找不到任何文档来说明错误的含义以及我可以采取什么措施来解决它。

这个错误是什么意思?这意味着,在这种情况下,给定列索引需要一个值,但找不到。 (顺便说一句,列通常是 0 索引,这意味着列索引 8 处的错误很可能是指列号 9)

这可能是由无数不同的问题引起的,其中我遇到了两个。

  1. 错误地将 NULL 列分类为 NOT NULL。在 JSON 中从 SSMS 导出模式后,我需要清理它 准备好 BQ 并在这样做时我将 IS_NULLABLE:NO 分配给 MODE:NULLABLEIS_NULLABLE:YESMODE:REQUIRED。这些 价值观应该已经颠倒了。这导致了错误,因为那里 是 NULL 列,其中 BQ 期望 REQUIRED 值。
  2. 使用了错误的分隔符 我输出的文件不仅是comma-delimited而且是tab-delimited。我只能通过使用 Excel 中的获取数据工具并以这种方式导入数据来验证这一点,之后我看到单元格内的选项卡出现错误。

在使用竖线 (|) 分隔符输出后,我终于能够成功地将文件加载到 BigQuery 中,没有出现任何错误。