我正在尝试将整个表从BigQuery传输到Cloud SQL。经过研究,我将表格下载为csv格式的文件到GCS存储桶中。然后,我创建了一个Cloud SQL MySQL实例,一个数据库和一个与BigQuery表具有相同架构的表。
现在,我正在按照此处的说明进行操作:https://cloud.google.com/sql/docs/mysql/import-export/importing,以将那些csv文件导入到Cloud SQL数据库中。
它适用于单个文件,但是如果我尝试使用*,例如gs:// bucket / fileprefix_ *,则会收到错误消息:错误:(gcloud.sql.import.csv)HTTP错误403:服务帐户没有存储桶所需的权限。
我的桌子大约有52GB的空间,导出到存储桶时分成了69个csv文件。
我尝试过 gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:W gs:// [BUCKET_NAME] /
gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:R gs:// [BUCKET_NAME] / [IMPORT_FILE_NAME]
gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:O gs:// [BUCKET_NAME] / [IMPORT_FILE_NAME]
我还去了IAM并编辑了服务帐户的权限,但这无济于事。
答案 0 :(得分:1)
正如格雷厄姆在评论中提到的那样,您授予的权限很可能是罪魁祸首。
他提到了storage.objects.list,这肯定是您需要的,但是我想您可能还需要storage.buckets.get。
我的理由是,对于单个对象访问,您根本不需要了解存储桶的任何信息...但是要获取对象的完整列表,必须通过存储桶meta标签进行检索,这意味着需要对存储桶本身的许可。我不确定,但是如果您尚未在服务帐户中设置这两个权限,请尝试一下。