You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Bucket中|分隔的CSV导入Google Cloud SQL的MySQL实例?

解决Google Cloud SQL MySQL导入CSV的权限问题

处理MySQL root用户无FILE权限及LOAD DATA INFILE报错

Google Cloud SQL的托管root用户默认没有FILE权限,这是平台的安全限制,直接用LOAD DATA INFILE会失败。改用本地导入模式即可解决:

  • 连接Cloud SQL时,在MySQL Workbench的连接配置里,进入Advanced标签,添加连接参数local-infile=1;或者启动Workbench时加上命令行参数--local-infile=1。
  • 执行导入命令时使用LOAD DATA LOCAL INFILE,适配|分隔符的示例:
    LOAD DATA LOCAL INFILE '/本地路径/你的文件.csv'
    INTO TABLE 目标表名
    FIELDS TERMINATED BY '|'
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS; -- 若CSV包含表头则添加此行
    
  • 提前确认:你的Workbench所在机器的IP已加入Cloud SQL实例的授权网络(控制台Connections标签配置),确保能正常连接实例。

修复gcloud sql import csv的403权限错误

这个报错是因为Cloud SQL实例的服务账号没有访问目标GCS Bucket的权限,按以下步骤处理:

  1. 获取Cloud SQL服务账号:在Cloud SQL控制台进入目标实例,Configuration标签下找到Service account,复制该账号(格式类似service-xxxx@cloudsql-admin.iam.gserviceaccount.com)。
  2. 给服务账号赋Bucket权限:
    • 打开GCS控制台,进入目标Bucket的Permissions标签,点击Grant access。
    • 在New principals中粘贴复制的服务账号,Role选择Storage Object Viewer(仅需读取CSV时)或Storage Admin(需更多操作时),点击Save。
  3. 正确执行导入命令,适配|分隔符的示例:
    gcloud sql import csv 你的实例名 gs://你的Bucket名/文件路径.csv \
      --database=目标数据库名 \
      --table=目标表名 \
      --fields-terminated-by='|' \
      --ignore-rows=1 # 若CSV含表头则添加
    
  • 额外检查:确保Bucket与Cloud SQL实例的区域一致,避免跨区域访问的潜在问题。

导入前的必要检查

  • 目标表结构需与CSV字段完全匹配(数据类型、字段数量、顺序)。
  • 确认CSV编码为UTF-8,避免乱码问题。
  • 使用gcloud命令时,本地CLI需已登录且拥有Cloud SQL Admin和Storage Admin权限。

内容的提问来源于stack exchange,提问作者user3773028

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:22:29