根据Google Cloud Platform SQL文档,我应该能够通过在文件名中添加*来导出和导入GCS存储桶中的分片文件。
如果我导入一个文件,它可以正常工作:
gcloud sql import csv sql-instance-name gs://gcsbucketname/data/led/led_finance_view_000000000000.csv --project=project-name --database=finance --table=Import_Test -q
Importing data into Cloud SQL instance...done.
Imported data from [gs://gcsbucketname/data/led/led_finance_view_000000000000.csv] into [https://www.googleapis.com/sql/v1beta4/projects/project-name/instances/sql-instance-name].
但是,如果我导入分片文件,它将引发权限错误:
gcloud sql import csv sql-instance-name gs://gcsbucketname/data/led/led_finance_view_*.csv --project=project-name --database=finance --table=Import_Test -q
ERROR: (gcloud.sql.import.csv) HTTPError 403: The service account does not have the required permissions for the bucket.
我可以使用相同的存储桶和SQL实例确认这些命令是否在同一用户下运行。
我认为“ 403服务帐户权限”错误可能是GCP中的错误,因此是红色鲱鱼-但是为什么不让我导入分片文件?
答案 0 :(得分:1)
您必须获取当前数据库实例的用户ID(创建时),为了获取该用户ID,请在终端中输入以下内容:
命令:gcloud sql实例描述简短的[名称/数据库实例]
然后,转到gcs项目->打开存储桶->添加成员许可,您必须添加在第一个命令中获得的用户ID,为该用户ID添加Storage Admin的角色。
仅此而已。
答案 1 :(得分:0)
当前,CloudSQL不包含使用通配符一次导入多个CSV文件的可能性。我为此打开了一个公共feature request。您可以注视以使其可见度。
与此同时,作为一种解决方法,您可以使每个文件都运行一个脚本来运行一次导入命令,或者在导入前加入CSV文件。