PostgreSQL建表使用DECIMAL类型插入数据报numeric field overflow错误
问题诊断与解决方案
结论
你对DECIMAL参数的理解是完全正确的,ERROR: numeric field overflow报错是因为gross_gdp字段的长度定义不足以覆盖你的业务数据取值范围。
字段核对
逐一核对你定义的字段和示例取值的适配性:
hdi DECIMAL(4,3):最大支持9.999,示例值0.716符合要求,无问题education_index DECIMAL(4,3):最大支持9.999,示例值0.695符合要求,无问题health_expend_2017 DECIMAL(3,1):最大支持99.9,示例值10.6符合要求,无问题life_expectancy DECIMAL(4,1):最大支持999.9,示例值74.6符合要求,无问题below_poverty_line DECIMAL(3,1):最大支持99.9,示例值32.5符合要求,无问题gender_ineq DECIMAL(4,3):最大支持9.999,示例值0.429符合要求,无问题gdp_per_capita INTEGER:示例值7005符合整数类型取值范围,无问题gross_gdp DECIMAL(5,1):最大支持9999.9,若你的业务数据中存在≥10000.0的gross_gdp取值,就会触发溢出错误
修复方案
调整建表语句中gross_gdp的字段定义即可,示例修改后的建表语句:
CREATE TABLE metrics ( country TEXT, hdi DECIMAL(4,3), education_index DECIMAL(4,3), health_expend_2017 DECIMAL(3,1), life_expectancy DECIMAL(4,1), gdp_per_capita INTEGER, gross_gdp DECIMAL(6,1), below_poverty_line DECIMAL(3,1), gender_ineq DECIMAL(4,3) );
调整后gross_gdp最大可支持99999.9的取值,覆盖绝大多数国家的GDP统计范围,若有更大取值需求可对应调高DECIMAL第一个参数的数值。
内容的提问来源于stack exchange,提问作者mathy_person_
相关产品推荐
相关产品推荐

