如何修改BigQuery数据表列?附数据清洗(更新空值)SQL代码
BigQuery数据表列修改操作指南
常见列修改场景及SQL示例
添加新列
如果要给现有表新增一列(比如新增release_year列,类型为INT64):
ALTER TABLE pvr-data-project.testing_dataset.movie_metadata_v3a ADD COLUMN release_year INT64;
修改列名
把现有列movie_buff_uuid改名为user_uuid:
ALTER TABLE pvr-data-project.testing_dataset.movie_metadata_v3a RENAME COLUMN movie_buff_uuid TO user_uuid;
修改列数据类型
注意:修改数据类型需要确保现有数据能兼容转换,比如把字符串类型的列调整为标准STRING类型,或者把整数类型转为浮点型:
ALTER TABLE pvr-data-project.testing_dataset.movie_metadata_v3a ALTER COLUMN movie_name SET DATA TYPE STRING;
如果原列数据无法兼容目标类型,会执行失败,需要先清洗数据再修改
删除列
删除不再需要的old_column列:
ALTER TABLE pvr-data-project.testing_dataset.movie_metadata_v3a DROP COLUMN old_column;
调整列顺序
BigQuery不支持直接调整现有表的列顺序,若需要重新排列列,可通过创建新表并指定列顺序实现:
CREATE OR REPLACE TABLE pvr-data-project.testing_dataset.movie_metadata_v3a AS SELECT movie_name, user_uuid, release_year -- 按需要的顺序排列列 FROM pvr-data-project.testing_dataset.movie_metadata_v3a;
结合你的更新操作修改列
如果需要在完成空值更新后同步修改列,可将更新语句与列修改语句按顺序执行,或者放在同一个脚本中(注意分号分隔):
-- 先执行空值更新 UPDATE pvr-data-project.testing_dataset.movie_metadata_v3a t SET t.movie_buff_uuid = u.movie_buff_uuid FROM pvr-data-project.testing_dataset.movie_metadata_v3a u WHERE t.movie_name = u.movie_name; -- 再执行列修改,比如修改列名 ALTER TABLE pvr-data-project.testing_dataset.movie_metadata_v3a RENAME COLUMN movie_buff_uuid TO user_uuid;
内容的提问来源于stack exchange,提问作者Jerry Vfc
相关产品推荐
相关产品推荐

