Переместить содержимое одной базы данных Google Bigquery в другую базу данных Bigquery - PullRequest
0 голосов
/ 07 мая 2018

Какие-нибудь рекомендации по процессу ETL, которые были бы хороши для переноса данных из базы данных Bigquery в другую базу данных Bigquery? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Используя Клиентскую библиотеку Python , например, вы можете использовать что-то вроде следующего (аналогично примеру этой официальной ссылки ):

from google.cloud import bigquery

client = bigquery.Client()

project = '<your-project-id>'
source_dataset = '<your-source-dataset>'
source_table = '<your-source-table>'
dest_dataset = '<your-dest-dataset>'
dest_table = '<your-dest-table>'

source_dataset_ref = client.dataset(source_dataset, project=project)
source_table_ref = source_dataset_ref.table(source_table)
dest_table_ref = client.dataset(dest_dataset).table(dest_table)

#Copy Table
job = client.copy_table(source_table_ref,
    dest_table_ref,
    location="US")

#Delete original table
table_ref = client.dataset(source_dataset).table(source_table)
client.delete_table(table_ref)

Примите во внимание следующее (из официальных документов здесь ):

При копировании таблицы наборы данных, содержащие исходную таблицу и таблицу назначения, должны находиться в одном месте.

После копирования вы можете удалить исходную таблицу:

0 голосов
/ 07 мая 2018

Вы не можете двигаться. Но вы можете копировать и удалять после Для копирования вы можете использовать команду bq copy для каждого набора данных, который вы хотите переместить

И такой скрипт

#!/bin/sh
export SOURCE_DATASET="<bq_project>:<bq_dataset>"
export DEST_PREFIX="<bq_target_project>:<bq_target_dataset>."
for f in `bq ls -n 10000 $SOURCE_DATASET |grep TABLE | awk '{print $1}'`
do
  bq --nosync cp $SOURCE_DATASET.$f $DEST_PREFIX$f
done
...