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

通过Cloud Shell从Cloud Storage向Cloud SQL导入分号分隔的大CSV

解决分号分隔CSV导入Cloud SQL的方法

没问题,我帮你一步步搞定这个大CSV文件的导入,不用下载到本地修改!咱们用Cloud Shell结合MySQL客户端和Cloud Storage工具来操作:

1. 准备工作:确保权限和工具就绪

  • 先确认你在Cloud Shell里有足够权限:能访问Cloud Storage的bd_storage实例,以及Cloud SQL的test数据库。
  • 如果Cloud Shell里还没装MySQL客户端,先运行这条命令安装:
    sudo apt-get update && sudo apt-get install mysql-client -y
    
  • 另外,确保Cloud SQL Admin API已经启用(如果没开,去Cloud Console的API库搜一下启用就行)。

2. 用Cloud SQL Proxy安全连接数据库

用Proxy连接不用手动授权IP,是最方便安全的方式:

# 如果没有cloud_sql_proxy,先下载并赋予执行权限
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy

# 启动Proxy,替换成你的项目ID、区域和实例名
./cloud_sql_proxy -instances=<你的项目ID>:<区域>:test=tcp:3306 &

3. 直接通过管道导入分号分隔的CSV

我们用gsutil cat读取Cloud Storage上的CSV内容,通过管道传给MySQL客户端,直接指定分号作为分隔符:

gsutil cat gs://bd_storage/你的CSV文件名.csv | mysql -u <数据库用户名> -p<数据库密码> test -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE matriculas FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;"

参数说明:

  • FIELDS TERMINATED BY ';':核心配置,指定字段用分号分隔
  • ENCLOSED BY '\"':如果你的CSV字段用双引号包裹,保留这个配置;没有的话可以删掉
  • IGNORE 1 ROWS:如果CSV第一行是表头,加这个忽略表头;没有表头就去掉
  • /dev/stdin:表示把管道传过来的内容作为输入源,不用把文件下载到Cloud Shell本地

4. 验证导入结果

导入完成后,登录数据库检查数据是否正确:

mysql -u <数据库用户名> -p<数据库密码> test -e "SELECT COUNT(*) FROM matriculas;"

如果返回的行数和CSV里的数据行数(去掉表头的话)一致,就说明导入成功啦!

小贴士:如果文件特别大,导入过程别关闭Cloud Shell窗口,或者用nohup命令让导入任务在后台运行,避免中途中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:21:49