如何在BigQuery中修改列数据类型:INT64转STRING NOT NULL报错解决
BigQuery修改INT64列为非空STRING类型报错解决方案
报错原因
你使用的SQL不符合BigQuery的ALTER COLUMN语法规范。修改列数据类型时必须显式指定SET DATA TYPE关键字,缺失该关键字就会触发「期望DROP或SET关键字但遇到STRING标识符」的语法报错。
解决方案
前置检查
如果id列当前存在NULL值,需要先将NULL值替换为合法字符串,否则设置NOT NULL约束会执行失败,示例更新语句:UPDATE table_name SET id = 'default_value' WHERE id IS NULL;
执行UPDATE操作前请确认过滤条件,避免误改数据
如果确认id列没有NULL值,可直接执行类型修改语句。
正确修改语句
ALTER TABLE table_name ALTER COLUMN id SET DATA TYPE STRING NOT NULL;
额外注意事项
仅BigQuery支持的兼容类型可直接通过
SET DATA TYPE修改,INT64转STRING属于官方支持的隐式转换场景,可直接操作;如果是不兼容的类型转换(比如STRING转DATE且格式不统一),需要先新建目标类型的列,将原列数据清洗同步到新列后,再删除旧列、重命名新列完成替换。
内容的提问来源于stack exchange,提问作者Shadow Walker
相关产品推荐
相关产品推荐

