导入CSV到Cloud SQL Postgres实例报invalid input syntax错误
问题根因定位
你遇到的报错和字段类型差异无关,从报错信息就能直接定位问题:
通用::预条件失败:错误:double precision 类型输入语法无效:"sale_dollars"
上下文:COPY 操作 iowa_test_table 表,第1行,sale_dollars 列的值为:"sale_dollars"
报错明确说明导入工具把CSV第一行的表头字段名sale_dollars当成了实际数据,尝试写入数字类型的字段才触发格式错误。PostgreSQL的double precision类型本身就完全兼容CSV中的float格式数值,不需要额外修改字段类型。
修复方案
根据你使用的导入方式选择对应操作即可:
- 若使用Cloud SQL控制台自带的导入功能:在导入配置页勾选「跳过表头行」,设置跳过行数为1
- 若手动执行
COPY命令导入:在命令末尾添加HEADER参数,示例如下:
COPY iowa_test_table FROM 'GCS上的CSV文件路径' WITH (FORMAT csv, HEADER true, DELIMITER ',', ENCODING 'UTF8');
- 若使用pgAdmin导入向导:在导入选项步骤中,勾选「CSV包含表头(Header)」选项,工具会自动跳过第一行
额外注意事项
如果完成上述操作后仍有导入报错,再排查以下问题即可:
- CSV对应数值列是否存在空值、非数字字符、千位分隔符等不符合数值格式的内容
- CSV的字段分隔符、编码格式是否和导入配置一致
内容的提问来源于stack exchange,提问作者Rishabh Mishra
相关产品推荐
相关产品推荐

