BigQuery数据加载报错:字段esb_shipping类型变更异常求助
解决BigQuery LoadJob数据类型不匹配报错(STRING转INTEGER)
可能原因分析
- CSV字段隐性数据变化:即便你确认未修改导出文件,也可能某次导出时
esb_shipping字段产出了纯数字内容,若LoadJob开启了自动Schema推断,BigQuery会尝试将字段类型改为INTEGER,与现有表的STRING类型冲突。 - 表架构被隐性修改:其他脚本、任务,或是表的分区调整、克隆操作,可能在不知情的情况下修改了
esb_shipping的字段类型。 - LoadJob配置疏漏:若加载任务开启了允许自动更新Schema的选项,且字段类型不兼容,就会触发该报错。
具体解决步骤
- 验证CSV字段内容:检查
esb_shipping字段的所有行,确认是否存在纯数字值(含空值、特殊格式数字),可通过文本编辑器或批量脚本完成校验。 - 锁定Schema加载:在LoadJob中明确指定目标表的Schema,关闭自动推断逻辑。示例Java代码:
Schema schema = Schema.of( Field.of("esb_shipping", StandardSQLTypeName.STRING), // 补充其他字段定义 ); LoadJobConfiguration loadConfig = LoadJobConfiguration.newBuilder(tableId, gcsUri) .setFormatOptions(FormatOptions.csv()) .setSchema(schema) .setWriteDisposition(WriteDisposition.WRITE_APPEND) .setSchemaUpdateOptions(ImmutableList.of()) // 禁用自动Schema更新 .build(); - 检查表架构历史:在BigQuery控制台进入目标表,查看「架构历史」面板,确认是否存在未察觉的类型变更操作。
- 强制兼容字符串类型:若CSV中
esb_shipping确实为数字但需保留STRING类型,可在加载配置中开启允许字段值带引号,确保数字被识别为字符串格式。
内容的提问来源于stack exchange,提问作者Shubham Kumar
相关产品推荐
相关产品推荐

