【问题标题】:Loading data from .csv files in GCS bucket into a Cloud SQL table:将 GCS 存储桶中的 .csv 文件中的数据加载到 Cloud SQL 表中:
【发布时间】:2020-05-06 20:42:40
【问题描述】:

我正在尝试将整个表从 BigQuery 传输到 Cloud SQL。经过研究,我将表格下载为 csv 格式文件到 GCS 存储桶中。然后我创建了一个 Cloud SQL MySQL 实例、一个数据库和一个与 BigQuery 表具有相同架构的表。

现在,我按照此处的说明进行操作:https://cloud.google.com/sql/docs/mysql/import-export/importing 将这些 csv 文件导入 Cloud SQL 数据库。

它适用于单个文件,但如果我尝试使用 * like gs://bucket/fileprefix_* 我收到错误:错误:(gcloud.sql.import.csv)HTTPError 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 并编辑了服务帐户的权限,但这没有帮助。

【问题讨论】:

  • 服务帐号现在有什么权限?我相信你在使用通配符时需要storage.objects.list

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2020-09-17
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多