如何使用查询替换 BQ 中的分区?

问题描述

我想用临时表中已经可用的数据替换我的 BQ 表上的最新分区。

有人可以帮我做这件事吗?

以下命令没有帮助:

bq query \
--use_legacy_sql=false \
--replace \
--destination_table 'mydataset.table1$20160301' \
'SELECT
  column1,column2
FROM
  mydataset.mytable'

解决方法

我猜你需要使用 bq cp 而不是 bq query

来自here

要复制分区,请使用 bq 命令行工具的 bq cp (copy) 带有分区装饰器 ($date) 的命令,例如 $20160201。

可选标志可用于控制 目标分区:

-a 或 --append_table 将源分区中的数据附加到目标数据集中的现有表或分区。

-f 或 --force 会覆盖目标数据集中的现有表或分区,并且不会提示您进行确认。

如果表或分区存在于目标数据集中,

-n 或 --no_clobber 将返回以下错误消息: 'project_id:dataset.table 或 table$date' 已经 存在,跳过。如果未指定 -n,则默认行为是 提示您选择是替换目标表还是 分区。

bq --location=location cp \ 
-f \
project_id:dataset.source_table$source_partition \
project_id:dataset.destination_table$destination_partition

所以不要忘记使用-f参数来销毁旧分区

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...