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読み込んで流し込むスクリプトを作る必要がありそう。めんどい。