BigQuery加载CSV遇字段名字符映射错误,求解决方案
解决BigQuery加载CSV时"LEVEL"字段名不支持的问题
直接可用的解决方案
启用字符映射V2:在LOAD DATA语句中添加
field_name_policy = 'MAP_V2'参数,让BigQuery自动处理保留字字段名,无需修改原CSV文件。修改后的SQL如下:LOAD DATA OVERWRITE `green-gearbox-217510.DATA.INVERSION` FROM FILES ( format = 'CSV', uris = ['gs://landing/INVERSIONES.csv'], field_name_policy = 'MAP_V2' );这个参数会自动将
LEVEL这类保留字转换为合法字段名(比如level_),同时不影响其他字段的自动schema检测。手动修改CSV字段名:如果不想依赖自动映射,直接把CSV里的
LEVEL字段改成非保留字(比如LEVEL_或USER_LEVEL),之后用原语句加载即可。显式指定Schema(不推荐):若必须保留原字段名,可以在LOAD DATA中手动定义Schema,用反引号包裹保留名字段:
LOAD DATA OVERWRITE `green-gearbox-217510.DATA.INVERSION` FROM FILES ( format = 'CSV', uris = ['gs://landing/INVERSIONES.csv'] ) SCHEMA ( `LEVEL` INT64, -- 用反引号包裹保留字 -- 其他字段按实际情况补充 other_field STRING );注意:这种方式虽能绕过错误,但后续查询该字段时必须始终用反引号包裹,容易引发额外问题,优先推荐前两种方案。
问题原因
LEVEL是BigQuery的保留关键字(用于递归查询中的LEVEL函数),近期BigQuery可能调整了字段映射规则,原默认的字符映射(V1)不再允许直接使用保留字作为字段名,因此需要切换到V2映射或修改字段名适配新规则。
内容的提问来源于stack exchange,提问作者MarC
相关产品推荐
相关产品推荐

