表不是很大,我想删除一列。尝试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
。什么是在适当的位置删除列(而不需要创建新表)的正确方法?
bq更新see here不支持此功能。 Google提供了以下workarounds,其中包括通过CLI进行的机制,但有缺点。
使用SELECT * EXCEPT
机制,您可以覆盖原始表,这样可以避免创建新表,但也可能导致大量查询成本。
想用纯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>