Edited at

定期的に Google Cloud Datastore から BigQuery へ自動でデータをシンクする方法

More than 1 year has passed since last update.

あまり書いている人がいなかったのと、一度聞かれたことがあったので、他の人の時間節約のためにかいておきます。ここを自動化したものです。


データの流れ

Datastore => Google Storage => BigQuery


スクリプト

PROJECT_IDはGCPのproject idです。あらかじめgs://${PROJECT_ID}-backupのバケットを作っておいてください。あとjqコマンドも入れてください。


#!/usr/bin/env bash

set -e

gcloud config set project ${PROJECT_ID}

RESULT=`gcloud beta datastore export --kinds="TableA,TableB" --format=json gs://${PROJECT_ID}-backup`

DIR=`echo $RESULT | jq -r .metadata.outputUrlPrefix`

for x in TableA TableB
do
echo import ${x}
bq load --project_id=${PROJECT_ID} --headless --source_format=DATASTORE_BACKUP --replace cloud_datastore.${x} ${DIR}/all_namespaces/kind_${x}/all_namespaces_kind_${x}.export_metadata
done