【问题标题】:Copy multiple partitioned table from source project to another partitioned table in destination project in BigQuery将多个分区表从源项目复制到 BigQuery 中目标项目中的另一个分区表
【发布时间】:2020-01-09 23:52:42
【问题描述】:

我的产品环境中有一个分区表(有一年的日期分区),我想将所有这些分区复制到我的开发环境中的另一个分区表中。我怎样才能一口气做到这一点?

我试过这个命令,但它一次只复制一个分区。

bq cp -a ':._20180605' :.

我可以从用逗号分隔的源表中一次选择多个表,但是如果我没有如下所述指定目标表日期分区,那么它会创建具有相同名称的新表......而不是在之前创建的数据中附加数据分区表

bq cp -a ':._20180605' :.

如何一次将所有分区从源表复制到目标表?是否有任何查询或 bq 命令可以做到这一点?

【问题讨论】:

  • 您的源表看起来像每日表,每天一个表,而不是 BigQuery 分区表,cloud.google.com/bigquery/docs/partitioned-tables。您的目标表是 BigQuery 分区表吗?
  • 如果您希望 table1 的副本存在于一个数据集中,然后复制到另一个数据集中,只需复制该表。无需事先创建目标表。或者,如果您想强制覆盖目标表中的数据,请在 bq 命令中使用 -f 标志。

标签: google-cloud-platform google-bigquery


【解决方案1】:

根据Copying multiple source tables 的文档:“源表必须指定为逗号分隔的列表。”

因此,我可以建议您 3 个替代方案:

首先: 如果您的分区表包含带有分区日期的列,您可以创建一个 bq 命令来选择您想要的分区日期,将列表保存在文件中并执行使用 bash 命令。因此,您将能够将所有表附加到所需的目标表。语法如下:

bq query --format=csv --nouse_legacy_sql '
SELECT
  CONCAT('bq cp -a <sourceproj>:<dataset>.<table>$', partition_name, ' <testproj>:<dataset>.Partitioned_Destination_Table')
FROM (
  SELECT
    DISTINCT FORMAT_DATETIME('%Y%m%d',
      CAST(_PARTITIONDATE AS datetime)) partition_name
  FROM
    `<sourceproj>.<dataset>.<table>`
  WHERE
    _PARTITIONTIME >= "start_date"
    AND _PARTITIONTIME < "end_date")' > output.csv

然后,使用所有 bq 复制命令执行文件。

bash output.csv

你可以阅读更多关于 bq 命令行 here.

第二: 在 shell 脚本中列出所有时间戳分区并查询,然后将每个表附加到已创建的分区目标表中。语法是:

tables=("20200107"  "20200106"  "20200105"  "20200104")

   for val in ${tables[*]}; do
        bq cp -a <project1>:<dataset1>.<table1_$val> <project2>:<dataset2>.<Partitioned_Destination_Table>
   done

第三: 如果您的数据集只包含您要复制的表,您可以复制整个数据集,您可以阅读更多关于它的信息here,它会是以下:

 bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多