Google BigQuery:如何使用bq命令行删除列?

问题描述 投票:0回答:2

表不是很大,我想删除一列。尝试bq update project:schema.table schema_one_column_less.json,但有一个例外:BigQuery error in update operation: Provided Schema does not match Table xxx. Field xxxxx is missing in new schema。什么是在适当的位置删除列(而不需要创建新表)的正确方法?

google-bigquery
2个回答
0
投票

bq更新see here不支持此功能。 Google提供了以下workarounds,其中包括通过CLI进行的机制,但有缺点。

使用SELECT * EXCEPT机制,您可以覆盖原始表,这样可以避免创建新表,但也可能导致大量查询成本。


0
投票

想用纯SQL解决方案来补充其他答案:

CREATE OR REPLACE TABLE
  <your_table> AS
SELECT
  * EXCEPT(<column_to_remove>)
FROM
  <your_table>

值得一提的是,如果表中存在约束(例如NOT NOT NULL),则必须使用约束来指定完整的列列表,例如:

CREATE OR REPLACE TABLE
  <your_table>(<full_column_list>) AS
SELECT
  * EXCEPT(<column_to_remove>)
FROM
  <your_table>
© www.soinside.com 2019 - 2024. All rights reserved.