Cloud SQLをデータ分析の一時テーブル的に使おうとしているけど、ブラウザ上のCloud Consoleではうまくいくのに、自分のマシンからgcloudコマンドでやるとエラーが連発する。
WEBブラウザ上は下記のような画面で、選択時に必要な権限を付加するとか、CSVなのかSQLのダンプなのか選べたり、テーブルを指定できる。
これでやると成功する
2017/08/22 10:41:45 インポート gs://*******/member.csv.gz からインポートしました。
gcloudコマンドでそれっぽいコマンドのヘルプ
% gcloud beta sql instances import --help
NAME
gcloud beta sql instances import - imports data into a Cloud SQL instance
from Google Cloud Storage
SYNOPSIS
gcloud beta sql instances import INSTANCE URI [--async]
[--database=DATABASE, -d DATABASE] [GCLOUD_WIDE_FLAG ...]
DESCRIPTION
(BETA) Note: authorization is required. For more information on importing
data into Google Cloud SQL see
https://cloud.google.com/sql/docs/import-export/importing.
POSITIONAL ARGUMENTS
INSTANCE
Cloud SQL instance ID.
URI
Path to the MySQL dump file in Google Cloud Storage from which the
import is made. The URI is in the form gs://bucketName/fileName.
Compressed gzip files (.gz) are also supported.
FLAGS
--async
Do not wait for the operation to complete.
--database=DATABASE, -d DATABASE
The database (for example, guestbook) to which the import is made. If
not set, it is assumed that the database is specified in the file to be
imported.
GCLOUD WIDE FLAGS
These flags are available to all commands: --account, --configuration,
--flatten, --format, --help, --log-http, --project, --quiet, --trace-token,
--user-output-enabled, --verbosity. Run $ gcloud help for details.
NOTES
This command is currently in BETA and may change without notice. This
variant is also available:
$ gcloud sql instances import
CSVかSQLかを選択するオプションが見当たらない。もちろんテーブルも指定できないのでCSVは使えないふいんき(ry
それでもCloud Storage上のCSV(gz圧縮)をインポートしようとするとまず権限エラーが出る
2017/08/22 10:29:29 インポート gs://**********/member.csv.gz: Access denied for account ************@speckle-umbrella-2.iam.gserviceaccount.com (permission issue?)
2017/08/22 10:27:26 インポート gs://**********/member.csv.gz: Access denied for account ************@speckle-umbrella-2.iam.gserviceaccount.com (permission issue?)
2017/08/22 10:27:05 インポート gs://**********/member.csv.gz: Access denied for account ************@speckle-umbrella-2.iam.gserviceaccount.com (permission issue?)
これはブラウザでCloud Storageの画面からログに表示されたユーザーに権限追加したら消えた。このユーザーはどのタイミングで変わるのかは分からない。
と、現時点でCloud SQLのCSVインポートを自動で行うには、Storageの権限問題と、CSV使えない問題が出てしまうので、PythonかなんかでMySQLとしてつなげて、CSV読み込んで流し込むスクリプトを作る必要がありそう。めんどい。