Cloud SQL导入存储桶CSV文件触发HTTPError 400报错咨询
报错根因
HTTPError 400: Unknow export file type 是Cloud SQL导入服务无法识别待导入文件为CSV格式触发的,常见遗漏的操作/配置点如下:
- 用错导入命令:拿导入SQL备份文件的
gcloud sql import sql命令跑CSV文件,或者调用通用导入接口时没指定文件类型,服务默认按SQL备份格式解析直接报错。CSV导入必须用专用的CSV导入指令,不能和SQL dump文件导入混用命令。 - 存储桶里的CSV文件后缀不符合要求:导入逻辑会优先校验对象路径后缀,如果你的文件在Cloud Storage里存成了无后缀(比如
gs://my-bucket/user_data)、或者后缀写错(比如.cvs、.txt),服务识别不出格式就会抛错。如果是gzip压缩的CSV,后缀必须是.csv.gz,zip、7z这类压缩格式目前不支持,也会报这个错。 - 命令参数拼写/路径拼接错误:手写或者脚本拼接导入命令时,把
csv拼错、gs路径带了多余不可见字符、漏写文件后缀段,服务拿到的路径不符合CSV文件的命名规则就会判定类型未知。 - 权限没配全:Cloud SQL实例的服务账号没拿到目标存储桶的
storage.objects.get权限,根本读不到文件的元数据信息,也会误报文件类型未知。这种情况的特征是你手动用同服务账号测试拉取对象元数据会直接报权限错误。
快速排查顺序
按这个顺序查,90%的同类问题10分钟内能定位
- 先核对导入命令的基础格式,CSV导入的gcloud命令基础结构必须是:
gcloud sql import csv <你的实例名> gs://<你的桶名>/<带.csv后缀的文件路径> --database=<目标库名> --table=<目标表名>
绝对不能用import sql子命令跑CSV文件。 - 去Cloud Storage控制台核对目标对象的完整文件名,确认后缀正确,没有被重命名成无后缀/其他后缀的文件,压缩包格式是支持的gzip且后缀为
.csv.gz。 - 核对命令里的gs路径拼写完全正确,脚本拼接的话打日志看最终执行的命令里有没有多余空格、转义错误。
- 检查存储桶的IAM权限,确认Cloud SQL实例对应的服务账号已经绑定了存储对象查看者相关角色,有权限读取目标文件。
内容的提问来源于stack exchange,提问作者user17801714
相关产品推荐
相关产品推荐

