代码之家  ›  专栏  ›  技术社区  ›  Bill LaLonde

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

  •  0
  • Bill LaLonde  · 技术社区  · 2 年前

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

    一位资源建议这可能是 datatype mismatch . 但是,SQL DB中的表将列列列为十进制,因此在我的模式文件中,我将其列为FLOAT,因为decimal不是受支持的数据类型。

    我找不到任何文档来说明错误的含义以及我能做些什么来解决它。

    0 回复  |  直到 2 年前
        1
  •  0
  •   E_net4 Tunn    2 年前

    这个错误意味着什么? 这意味着,在此上下文中,给定的列索引需要一个值,但找不到该值。(顺便说一下,列的索引通常为0,这意味着列索引8处的错误很可能是指列编号9)

    这可能是由无数不同的问题造成的,其中我经历了两个问题。

    1. 将空列错误分类为非空列 . 从SSMS导出JSON模式后,我需要清理它 在进行BQ时,我分配了 IS_NULLABLE:NO MODE:NULLABLE IS_NULLABLE:YES MODE:REQUIRED . 这些 值应该已反转。这导致了错误,因为 为空列,其中BQ应为 必修的 价值
    2. 使用错误的分隔符 我输出的文件不仅用逗号分隔,而且用制表符分隔。我只能通过在Excel中使用“获取数据”工具并以这种方式导入数据来验证这一点,然后我看到单元格中选项卡的错误。

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