如何删除BigQuery中含保留字及空格的列?
解决BigQuery中删除含空格与保留字列的问题
- 问题核心:带空格和保留字的列名(如
delete upsert)在EXCEPT子句中直接引用会被BigQuery解析错误——delete是SQL保留字,空格也会导致列名识别混乱。 - 关键解法:对这类特殊列名用**反引号(`)**包裹,让BigQuery将其识别为列名而非语法关键字或无效元素。
完整重写表语句(一次性移除两列)
执行以下语句替换原表,不会丢失历史数据(注意替换为你的项目、数据集和表名,原语句中用单引号包裹表名是错误写法):
CREATE OR REPLACE TABLE `your-project.your-dataset.your-table` AS SELECT * EXCEPT(upsert, `delete upsert`) FROM `your-project.your-dataset.your-table`
说明:
CREATE OR REPLACE TABLE会直接覆盖原表结构与数据,无需新建表即可完成列移除。
若已删除upsert列,仅需移除delete upsert
执行:
CREATE OR REPLACE TABLE `your-project.your-dataset.your-table` AS SELECT * EXCEPT(`delete upsert`) FROM `your-project.your-dataset.your-table`
验证与注意事项
- 执行前可先加
LIMIT 1000验证结果是否符合预期:SELECT * EXCEPT(upsert, `delete upsert`) FROM `your-project.your-dataset.your-table` LIMIT 1000 - 确保拥有该表的编辑权限,
CREATE OR REPLACE TABLE需要对应权限才能执行。
内容的提问来源于stack exchange,提问作者DataAnalytics_Rookie
相关产品推荐
相关产品推荐

