Google bigquery 复制仅覆盖源表分区的分区bigquery表

Google bigquery 复制仅覆盖源表分区的分区bigquery表,google-bigquery,Google Bigquery,大概是 bq cp -f src_table dst_table 但我希望dst_表中不在src_表中的分区保持未重写状态。这样做可能吗?您可以这样做: 使用此查询为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

大概是

bq cp -f src_table dst_table

但我希望dst_表中不在src_表中的分区保持未重写状态。这样做可能吗?

您可以这样做:

使用此查询为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

您必须配置执行该操作所需的权限。在您的情况下,使用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]