将GCS存储桶中的.csv文件中的数据加载到Cloud SQL表中:

时间:2020-01-20 19:56:38

标签: google-bigquery google-cloud-storage google-cloud-sql

我正在尝试将整个表从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并编辑了服务帐户的权限,但这无济于事。

1 个答案:

答案 0 :(得分:1)

正如格雷厄姆在评论中提到的那样,您授予的权限很可能是罪魁祸首。

他提到了storage.objects.list,这肯定是您需要的,但是我想您可能还需要storage.buckets.get。

我的理由是,对于单个对象访问,您根本不需要了解存储桶的任何信息...但是要获取对象的完整列表,必须通过存储桶meta标签进行检索,这意味着需要对存储桶本身的许可。我不确定,但是如果您尚未在服务帐户中设置这两个权限,请尝试一下。