内容
GCPのSpannerのデータベースにローカルから接続する方法を解説します。
SpannerインスタンスにDBを作成する
以下の記事でSpannerインスタンスにデータベースを作成する方法を解説しています。(この記事では、すでにデータベースは作成済みの前提で進めます)
https://yssy.io/articles/gcp-spanner-db-create
gcloudコマンドでSpannerに接続する
書き込み
以下のコマンドを実行するとSpannerのデータベースに対して書き込みを実行できます。
$ gcloud spanner rows insert --instance=tfgen-spanid-20240506183705168 --database=spanner-database --table=t1 --data=t1=1 --project=project-name
commitTimestamp: '2024-05-06T19:42:07.003236Z'
読み取り
以下のコマンドでSpannerのデータベースに対して読み取りを実行できます。
$ gcloud spanner databases execute-sql spanner-database --instance=tfgen-spanid-20240506183705168 --sql='SELECT t1.t1 FROM t1' --project=project-name
t1
1
APIエラーが出た場合
$ gcloud spanner databases execute-sql spanner-database --instance=tfgen-spanid-20240506183705168 --sql='SELECT t1 FROM t1'
ERROR: (gcloud.spanner.databases.execute-sql) PERMISSION_DENIED: Cloud Spanner API has not been used in project project-name before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/spanner.googleapis.com/overview?project=project-name then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
- '@type': type.googleapis.com/google.rpc.Help
links:
- description: Google developers console API activation
url: https://console.developers.google.com/apis/api/spanner.googleapis.com/overview?project=project-name
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: googleapis.com
metadata:
consumer: projects/project-name
service: spanner.googleapis.com
reason: SERVICE_DISABLED
というエラーが出た場合、ログに記載されているURLにアクセスしてGCPのAPIを有効化してください。
まとめ
Spannerのデータベースに対する書き込みと読み込みをローカルからgcloudコマンドで行う方法を解説しました。