我正在尝试将存储在Google Cloud Project(Project1)中的BigQuery表(Table1)复制到另一个Google Cloud Project(Project2)。该表是TB的顺序。这样做的最佳方法是什么,以便我不必在本地导出表格?我应该将表格从Project1导出到Google云端存储,然后导出到Project2吗?或者有更好的方法吗?
答案 0 :(得分:6)
使用bq命令行工具将表从一个项目复制到另一个项目。您可以查看以下示例命令
<强>来源:强>
目标强>
<强>命令:强>
bq cp 123456789123:dataset1.table1 0987654321098:dataset2.table2
答案 1 :(得分:1)
如果源和目的地位于同一位置 - 您甚至可以在不同项目之间使用复制表
答案 2 :(得分:1)
使用python的大量复制快速脚本
这使用了上面给出的@ kanishka-mohaia命令,返回格式为json
每个数据集的每个表都将被复制到目标
此脚本不会处理数据集和表的创建
import json
import time
from subprocess import check_output
data_sets = json.loads(check_output("bq ls --format=json", shell=True).decode())
FROM_PROJECT = ''
TO_PROJECT = ''
for ds_item in data_sets:
dataset = ds_item['datasetReference']['datasetId'].strip()
tables = json.loads(
check_output(f"bq ls --format=json {dataset}", shell=True).decode())
for table_item in tables:
table = table_item['tableReference']['tableId']
print(f"Table = {dataset}.{table}")
command = f'echo y | bq cp {FROM_PROJECT}:{dataset}.{table} ' \
f'{TO_PROJECT}:{dataset}.{table}'
print(command)
try:
result = check_output(command, shell=True)
except Exception as e:
continue
print(result)
time.sleep(5)
答案 3 :(得分:1)
如果您想将数据集从一个项目复制到另一个项目,则可以使用以下命令进行传输作业:
bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
其中
PROJECT_ID
:目标project_ID
DATA_SOURCE
:cross_region_copy
DATASET
:目标数据集
NAME
:显示工作名称。
PARAMETERS
:可以定义源项目ID,源数据集ID和其他参数(覆盖目标表等)
您可以浏览此link以获得详细说明。