0

即使收到的数据少于预期的列数,是否有任何方法可以插入记录?我经常收到以下消息。

Too few columns: expected 24 column(s) but got 22 column(s)

如果我使用 max_bad_record 选项忽略此类记录,则会丢失数据。我希望看到一个选项,如果需要,它会通过添加额外的分隔符来强制插入记录。

4

3 回答 3

1

将数据预处理为正确的格式;如果您可以使用 perl、sed 或其他什么,则取决于您的平台。

如果 bigquery 不会抱怨太多字段,也许您可​​以简单地在所有记录上添加额外的分隔符。

于 2012-09-20T11:54:45.740 回答
1

正如 Michael Sheldon 在下面提到的,如果您指定 allowJaggedRows,那么列太少的行对于所有剩余的列都将变为 NULL。但是,如果您在行中间缺少列,BigQuery 不知道缺少哪一列,并且如果类型不匹配,您将收到该行的错误。

有一些关于将所有有错误的行添加到单独的表中的讨论,以便您可以处理它们并将它们附加到原始表中。如果您觉得这很有用,请告诉我。

于 2012-09-20T14:29:02.840 回答
0

是的,您现在可以使用allowJaggedRows作业负载配置中的选项来执行此操作。此选项将导致加载“接受缺少尾随可选列的行。缺少的值被视为空值。” 有关所有作业配置选项的完整列表,请参阅BigQuery 作业参考

此选项可通过以下方式在 bq 命令行工具上使用:创建和加载新表时bq load --allow_jagged_rows,在BigQuery UI中的“高级选项”下可用。

于 2013-11-21T20:11:43.203 回答