【发布时间】:2018-06-20 20:50:52
【问题描述】:
类似
bq cp -f src_table dst_table
但我希望 dst_table 中不存在于 src_table 中的分区保持未被覆盖。这样的事情可能吗?
【问题讨论】:
标签: google-bigquery
类似
bq cp -f src_table dst_table
但我希望 dst_table 中不存在于 src_table 中的分区保持未被覆盖。这样的事情可能吗?
【问题讨论】:
标签: google-bigquery
你可以这样做:
使用此查询为 bq 命令构建脚本
#legacySql
select concat ('bq cp -f ', s.project_id, ':', s.dataset_id, '.',
s.table_id, '\$', s.partition_id, ' ',
t.project_id, ':', t.dataset_id, '.', t.table_id, '\$', t.partition_id, ';')
from [source_table$__PARTITIONS_SUMMARY__] s
inner join (select * from [target_table$__PARTITIONS_SUMMARY__]) t
on t.partition_id = s.partition_id
然后在终端执行结果 确保您转义了 $ - 此代码适用于 Mac/Unix - 不确定 Windows
【讨论】:
如果我很好理解您的问题,您打算将表 1 中填写的分区从一个分区表(表 1)复制到另一个分区表(表 2)。
您必须配置执行操作所需的权限as described here。在你的情况下,使用bq cp -a 来
将源分区中的数据附加到现有表或 目标数据集中的分区
而不是bq cp -f,它会强制覆盖。例如:
bq --location=[LOCATION] cp -a -f -n [PROJECT_ID]:[DATASET].[SOURCE_TABLE]$[SOURCE_PARTITION] [PROJECT_ID]:[DATASET].[DESTINATION_TABLE]$[DESTINATION_PARTITION]
【讨论】: