当列的字符串字段收到解析错误时,如何将制表符分隔的文本文件上传到 Big Query?

How to upload tab delimited text file to Big Query when string field for column receives a parse error?

我有一个约 1 GB 的文本文件,其中包含 153 个单独的字段。我将文件上传到 GCS,然后在 BQ 中创建了一个新的 table,文件格式为“CSV”。对于 table 类型,我选择了“native table”。对于架构,我选择了自动检测。对于字段分隔符,我选择了“制表符”。 运行 作业后,我收到以下错误:

无法将字段 int64_field_19(位置 19)的“15229-1910”解析为 INT64,从位置 318092352 开始,消息为 'Unable to parse'

错误源于“邮政编码加 4”字段。我的问题是是否有办法阻止该字段解析此值,或者是否有办法完全忽略这些解析错误以便完成作业?从 GCP 的文档中,他们建议“如果 BigQuery 无法识别格式,它将列加载为字符串数据类型。在这种情况下,您可能需要在加载源数据之前对其进行预处理”。我文件中的“邮政编码加四”字段已指定为字符串字段类型,因此,我不太确定从这里去哪里。由于我将分隔符选择为“制表符”,是否表示“邮政编码加上”值包含制表符?

BigQuery 在将数据加载到 BigQuery 时使用 auto-detect 架构来检测 table 的架构。根据您提供的示例数据,由于整数值之间存在破折号“-”,因此 BigQuery 会将 pincode 视为字符串值。如果要提供模式,可以避免使用 auto-detect 并手动提供模式。

如评论中所述,您可以按照以下步骤尝试将 1 GB 的文本文件上传到 Bigquery:

  • 正如您在问题中提到的,假设您的数据是 CSV 格式。从给定的示例数据中,我模拟了 excel sheet.
  • 中的数据

Excel Sheet

  • 以 .tsv 格式保存文件。
  • 您可以使用 auto-detect 架构并将制表符设置为分隔符将文件上传到 BigQuery。它将自动检测所有字段类型而不会出现任何错误,如屏幕截图中 BigQuery 中的 table 所示。

BigQuery Table