我正在寻找更新现有BigQuery表的方法。
使用CLI我可以将表格复制到新表格。现在,我正在寻找有效删除/重命名列的方法。
它说不可能删除一列。那么将table1复制到table2以排除某些列是否可能?
谢谢,
答案 0 :(得分:2)
您可以通过运行将旧表复制到新表的查询来执行此操作。您应指定allowLargeResults:true
和flattenSchema:false
。前者允许您查询结果大于128MB,后者可防止重复字段在结果中被展平。
您可以将结果写入与源表相同的表中,但使用writeDisposition:WRITE_TRUNCATE
。这将原子地用结果覆盖表。但是,如果您想首先测试查询,则可以先将结果写入临时表,然后在您对其满意时将临时表复制到旧表中(使用{{ 1}}以原子方式替换表格。
(注意,我在这里描述的标志是它们在底层API中的名称,但它们在Web UI和bq CLI中的查询选项中都有类似物。)
例如,如果您有一个包含模式{a,b,c,d}的表t1,并且您想要删除字段c,并将b重命名为b2,则可以运行
WRITE_TRUNCATE