🐶
BigQuery データを別プロジェクトに移行する最小手順
まえがき
今回、むかーしから使っているGoogleアカウントから法人のGoogleアカウントに変えまして、その際GCPまわりをいろいろ移行したんですが、BigQueryも移行したので、その時の手順になります。
ざっとした内容はGA4のデータと、システム側の統計データを突合したものをBQで扱っていて、それの移行でした。
概要
GCP プロジェクト(以下、A)から別のプロジェクト(以下、B)へ
BigQuery テーブルを安全かつシンプルに移行する 手順です。
今回は一時的に Google Cloud Storage (GCS) を経由して
CSV ファイルとしてエクスポート → 別アカウントで再インポート します。
環境概要
役割 アカウント例 プロジェクトID 用途
A側(旧) old-admin@example.com old-pjt-xxxx エクスポート元
B側(新) new-admin@example.com new-pjt-yyyy インポート先
gs://my-export-bucket/
手順フロー(全体)
BigQuery(旧PJT)
↓ bq extract
Google Cloud Storage(CSV)
↓ gsutil iam 一時公開
BigQuery(新PJT)
↓ bq load
Google Cloud Storage(非公開に戻す)
A側(旧プロジェクト)での操作
① アカウント確認
gcloud auth list
② BigQuery テーブルを CSV でエクスポート
bq extract --destination_format=CSV old-pjt-xxxx:ga4.init gs://my-export-bucket/ga4_init_*.csv
bq extract --destination_format=CSV old-pjt-xxxx:base.ana gs://my-export-bucket/base_ana_*.csv
出力後の確認
gsutil ls gs://my-export-bucket/
③ 一時的に全公開(objectViewer)
gsutil iam ch allUsers:objectViewer gs://my-export-bucket
B側(新プロジェクト)での操作
① アカウント切り替え
gcloud config set account new-admin@example.com
②BigQuery にデータセットを作成
bq mk new-pjt-yyyy:ga4
bq mk new-pjt-yyyy:base
③CSV ファイルをインポート
bq load --source_format=CSV --autodetect new-pjt-yyyy:ga4.init gs://my-export-bucket/ga4_init_*.csv
bq load --source_format=CSV --autodetect new-pjt-yyyy:base.ana gs://my-export-bucket/base_ana_*.csv
④テーブル確認
bq show new-pjt-yyyy:ga4.init
bq show new-pjt-yyyy:base.ana
A側に戻ってバケットを非公開に戻す
① アカウント戻し
gcloud config set account old-admin@example.com
gcloud auth list
② 公開権限の削除
gsutil iam ch -d allUsers:objectViewer gs://my-export-bucket
③ 現在の IAM 設定確認
gsutil iam get gs://my-export-bucket
あとがき
今回は、そこまでの容量ではないのでこうしました。ビックリするほどビックデータの場合は、コスト面要注意です。
Discussion