【发布时间】:2015-11-20 15:27:09
【问题描述】:
我正在寻找更新现有 BigQuery 表的方法。
使用CLI,我可以将表格复制到新表格。现在,我正在寻找一种有效的删除/重命名列的方法。
据说不能删除列。那么在将 table1 复制到 table2 以排除某些列时是否有可能?
谢谢,
【问题讨论】:
标签: google-bigquery
我正在寻找更新现有 BigQuery 表的方法。
使用CLI,我可以将表格复制到新表格。现在,我正在寻找一种有效的删除/重命名列的方法。
据说不能删除列。那么在将 table1 复制到 table2 以排除某些列时是否有可能?
谢谢,
【问题讨论】:
标签: google-bigquery
您可以通过运行将旧表复制到新表的查询来执行此操作。您应该指定allowLargeResults:true 和flattenSchema:false。前者允许查询结果大于 128MB,后者防止重复字段在结果中被展平。
您可以将结果写入与源表相同的表,但使用writeDisposition:WRITE_TRUNCATE。这将用结果自动覆盖表。但是,如果您想先测试查询,您总是可以先将结果写入临时表,然后在您满意时将临时表复制到旧表上(使用WRITE_TRUNCATE 原子替换表)。
(注意,我在这里描述的标志是它们在底层 API 中的名称,但它们在 Web UI 和 bq CLI 的查询选项中都有类似的名称。
例如,如果您有一个具有架构 {a, b, c, d} 的表 t1,并且您想删除字段 c,并将 b 重命名为 b2,您可以运行
SELECT a, b as b2, d FROM t1
【讨论】: