このドキュメントでは、少量のデータを CSV ファイル形式で Spanner に読み込む方法について説明します。本番環境データの移行を実行する前にサンプルデータを読み込み、スキーマ、クエリ、アプリケーションをテストできます。
始める前に
Google Cloud CLI をインストールするか、必要なすべてのツールがプリインストールされている Cloud Shell を使用します。
-
BigQuery データを Spanner にエクスポートするために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
- BigQuery テーブルからデータをエクスポートする: BigQuery データ閲覧者(
roles/bigquery.dataViewer
) -
エクスポート ジョブを実行する: BigQuery ユーザー(
roles/bigquery.user
) -
Spanner テーブルにデータを書き込む: Spanner データベース ユーザー(
roles/spanner.databaseUser
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
- BigQuery テーブルからデータをエクスポートする: BigQuery データ閲覧者(
Spanner にサンプルデータを読み込む
次の手順では、BigQuery リバース ETL ワークフローと Google Cloud CLI を使用して実行します。
次のコマンドを使用して、gcloud CLI でデフォルト プロジェクトを設定します。
gcloud config set project PROJECT_ID
ソースデータを CSV ファイル形式でエクスポートします。PostgreSQL データベースの場合は
pg_dump
、MySQL データベースの場合はmysqldump
のツールを使用して、サンプルデータを CSV ファイル形式に変換することを検討してください。次の
bq
コマンドを使用して、データを BigQuery に読み込みます。BigQuery データセットを作成します。
bq mk BQ_DATASET
データを新しい BigQuery テーブルにバッチ読み込みします。
bq load \ --source_format=CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET.BQ_TABLE /path/to/file
または、Cloud Storage ファイルからデータをバッチ読み込みすることもできます。
bq load \ --source_format=CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET.BQ_TABLE gs://BUCKET/FILE
次のコマンドを使用して、インポートされた BQ_TABLE に一致する Spanner スキーマを作成します。
gcloud spanner databases ddl update SPANNER_DATABASE \ --instance=SPANNER_INSTANCE \ --ddl="CREATE TABLE SPANNER_TABLE ..."
詳細については、Spanner スキーマを更新するをご覧ください。
次のコマンドを使用して、BigQuery から Spanner にデータをエクスポートします。
bq --use_legacy_sql=false 'EXPORT DATA OPTIONS( uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/SPANNER_INSTANCE/databases/SPANNER_DATABASE" format='CLOUD_SPANNER' spanner_options="""{ "table": "SPANNER_TABLE" }""" ) AS SELECT * FROM BQ_DATASET.BQ_TABLE;'