GCP新手求教:如何将GCE中的数据加载至Cloud SQL?
把GCE上的CSV导入Cloud SQL MySQL的可行方案
当然有办法啦!作为GCP新手,你可以通过以下几种实用方案把GCE上处理好的CSV文件导入Cloud SQL的MySQL实例:
方案一:通过Cloud SQL代理从GCE直接导入
这种方法适合想直接从GCE实例操作的场景,步骤如下:
- 步骤1:在GCE实例上安装Cloud SQL代理
登录你的GCE实例,执行以下命令下载并安装代理:wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy chmod +x cloud_sql_proxy - 步骤2:配置GCE实例的权限
确保你的GCE实例使用的服务账号拥有Cloud SQL Client角色(可以在IAM控制台里给服务账号添加这个角色)。 - 步骤3:启动Cloud SQL代理
用你的Cloud SQL实例连接名(格式:项目ID:区域:实例名)启动代理:./cloud_sql_proxy -instances=你的实例连接名=tcp:3306 & - 步骤4:用MySQL命令导入CSV
先连接到Cloud SQL的MySQL实例,然后执行LOAD DATA语句:
注意替换路径、数据库、表名,还有根据你的CSV格式调整分隔符等参数。LOAD DATA LOCAL INFILE '/path/to/你的文件.csv' INTO TABLE 你的数据库.你的表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; -- 如果CSV有表头的话加上这行
方案二:通过Cloud Storage中转导入(推荐大文件)
如果你的CSV文件比较大,用Cloud Storage中转更稳定,步骤如下:
- 步骤1:把GCE上的CSV上传到Cloud Storage
在GCE实例上执行gsutil命令复制文件:gsutil cp /path/to/你的文件.csv gs://你的存储桶名/目标路径/ - 步骤2:给Cloud SQL服务账号添加权限
找到Cloud SQL实例对应的服务账号(格式:service-项目编号@gcp-sa-cloudsql.iam.gserviceaccount.com),给它赋予Storage Object Viewer角色,这样它能读取Cloud Storage里的文件。 - 步骤3:执行导入操作
你可以通过Cloud Console操作,或者用gcloud命令:gcloud sql import csv 你的CloudSQL实例名 gs://你的存储桶名/目标路径/你的文件.csv \ --database=你的数据库名 \ --table=你的表名 \ --fields-terminated-by=',' \ --ignore-leading-row
方案三:直接用MySQL客户端远程导入(适合小文件)
如果CSV文件不大,你也可以在GCE实例上安装MySQL客户端,直接通过公网连接Cloud SQL实例(需要确保Cloud SQL实例的授权网络里添加了GCE实例的公网IP),然后用mysql命令或者客户端工具导入文件。
注意事项
- 确保你的MySQL表结构和CSV文件的字段顺序、类型匹配,不然导入会报错。
- 操作前最好先备份一下Cloud SQL实例,避免数据出错。
- 如果遇到权限问题,检查一下服务账号的角色是否配置正确。
内容的提问来源于stack exchange,提问作者Lufy
相关产品推荐
相关产品推荐

