You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写自动化Shell脚本通过Transfer Service命令复制BigQuery数据集

BigQuery 数据集批量复制Shell脚本实现方案

前置依赖

  • 已完成bq命令行工具的安装与谷歌云身份初始化
  • 当前账号持有源项目的数据集读取权限、目标项目的数据集创建及数据写入权限

实现逻辑

针对数千个数据集的批量复制场景,脚本会先拉取源项目下所有数据集列表,再遍历每个数据集调用BigQuery原生Transfer服务创建复制任务,无需逐表操作,避免数据遗漏。

完整可执行脚本

#!/bin/bash
# 自定义配置项,执行前请替换为实际值
SOURCE_PROJECT="your-source-project-id"
TARGET_PROJECT="your-target-project-id"
REGION="your-dataset-region" # 示例值:US、asia-east1、eu
# 可选配置:仅复制匹配指定前缀的数据集,不需要可注释
# DATASET_FILTER_PREFIX="prod_"
# 错误日志输出路径
ERROR_LOG="./bq_dataset_copy_error.log"

# 拉取源数据集列表
echo "正在拉取源项目 ${SOURCE_PROJECT} 下的数据集列表..."
if [ -z "${DATASET_FILTER_PREFIX}" ]; then
  DATASET_LIST=$(bq ls --datasets --project_id "${SOURCE_PROJECT}" | tail -n +3 | awk '{print $1}')
else
  DATASET_LIST=$(bq ls --datasets --project_id "${SOURCE_PROJECT}" | grep "^${DATASET_FILTER_PREFIX}" | tail -n +3 | awk '{print $1}')
fi

TOTAL_NUM=$(echo "${DATASET_LIST}" | wc -l)
echo "共检索到 ${TOTAL_NUM} 个待复制数据集"

# 遍历创建复制任务
CURRENT_INDEX=1
for DATASET_ID in ${DATASET_LIST}; do
  echo -e "处理进度:${CURRENT_INDEX}/${TOTAL_NUM},当前数据集:${DATASET_ID}"
  # 调用Transfer服务创建数据集复制任务
  bq mk --transfer_config \
    --project_id "${TARGET_PROJECT}" \
    --data_source cross_region_copy \
    --target_dataset "${DATASET_ID}" \
    --display_name "copy_${SOURCE_PROJECT}_${DATASET_ID}_to_${TARGET_PROJECT}" \
    --params "{\"source_dataset_id\":\"${DATASET_ID}\",\"source_project_id\":\"${SOURCE_PROJECT}\",\"overwrite_destination_table\":true}" \
    --location "${REGION}" \
    --no_ask_permission 2>> "${ERROR_LOG}"

  if [ $? -eq 0 ]; then
    echo "数据集 ${DATASET_ID} 复制任务创建成功"
  else
    echo "数据集 ${DATASET_ID} 复制任务创建失败,错误信息已写入 ${ERROR_LOG}"
  fi
  CURRENT_INDEX=$((CURRENT_INDEX + 1))
done

echo "所有数据集复制任务已处理完成"

使用说明

  • 执行前先给脚本添加执行权限:chmod +x bq_copy_datasets.sh
  • 若不需要覆盖目标端已存在的同名表,可将params中的overwrite_destination_table参数值改为false
  • 任务创建后会在后台自动异步执行,可在BigQuery控制台「数据传输」板块查看每个任务的执行状态和进度
  • 跨区域复制场景无需额外修改逻辑,仅需将REGION参数改为目标数据集所在的区域即可

内容的提问来源于stack exchange,提问作者Bharathram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:06:03