This document provides instructions on how to load a small amount of data in the CSV file format into Spanner. You can load sample data before performing a production data migration to test schemas, queries, and applications.
Before you begin
-
Install the Google Cloud CLI or use Cloud Shell , which has all the necessary tools pre-installed.
-
To get the permissions that you need to export BigQuery data to Spanner, ask your administrator to grant you the following IAM roles on your project:
- Export data from a BigQuery table:
BigQuery Data Viewer (
roles/bigquery.dataViewer) - Run an export job:
BigQuery User (
roles/bigquery.user) - Write data to a Spanner table:
Spanner Database User (
roles/spanner.databaseUser)
For more information about granting roles, see Manage access to projects, folders, and organizations .
You might also be able to get the required permissions through custom roles or other predefined roles .
- Export data from a BigQuery table:
BigQuery Data Viewer (
Load sample data to Spanner
The following instructions are performed using the BigQuery reverse ETL workflow and the Google Cloud CLI .
-
Set a default project on the gcloud CLI using the following command:
gcloud config set project PROJECT_ID
-
Export the source data in the CSV file format. Consider using
pg_dumpfor PostgreSQL databases ormysqldumpfor MySQL databases tools to convert your sample data into the CSV file format. -
Load the data into BigQuery by using the following
bqcommands:-
Create a BigQuery dataset.
bq mk BQ_DATASET
-
Batch load the data into a new BigQuery table.
bq load \ --source_format = CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET . BQ_TABLE /path/to/file
Alternatively, you can batch load the data from a Cloud Storage file.
bq load \ --source_format = CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET . BQ_TABLE gs://BUCKET/FILE
-
-
Create a Spanner schema that matches the imported BQ_TABLE by using the following command:
gcloud spanner databases ddl update SPANNER_DATABASE \ --instance = SPANNER_INSTANCE \ --ddl = "CREATE TABLE SPANNER_TABLE ..."
For more information, see Update Spanner schema .
-
Export data from BigQuery to Spanner by using the following command:
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 ;'

