You need to enable JavaScript to run this app. MySQL 6.0.11中CSV空float值转默认0.0存储如何避免格式异常
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 6.0.11中CSV空float值转默认0.0存储如何避免格式异常

问题根因

你遇到的Input string was not in a correct format报错,是C#侧数据转换触发的异常:CSV空单元格读取后得到的是null、空字符串或空白字符串,直接传入Convert.ToSingle()、float.Parse()这类方法时,无法识别空值类输入,就会抛出格式错误,和MySQL、存储过程逻辑无关。

解决方案

核心逻辑是转换前先判断输入是否为空,空值直接返回默认的0.0f,非空值再做格式转换,建议用float.TryParse()做容错转换,避免异常抛出。

步骤1:新增float安全转换辅助方法

在业务代码所在的类中新增如下通用方法:

private static float SafeConvertToFloat(string input, float defaultValue = 0.0f)
{
    // 处理null、空字符串、全空白字符串的情况
    if (string.IsNullOrWhiteSpace(input))
    {
        return defaultValue;
    }
    // 转换成功返回解析结果,转换失败也返回默认值
    return float.TryParse(input.Trim(), out float result) ? result : defaultValue;
}

如果你的CSV浮点数字符串用的是英文小数点、且部署环境区域格式不是中文/英文,可指定不变文化做转换,避免区域格式导致的解析失败,修改转换逻辑为:

return float.TryParse(input.Trim(), System.Globalization.NumberStyles.Float, 
    System.Globalization.CultureInfo.InvariantCulture, out float result) ? result : defaultValue;

步骤2:修改原有业务转换代码

把你业务逻辑中所有Convert.ToSingle(res[x])的调用,全部替换为SafeConvertToFloat(res[x])即可,修改后代码如下:

else if (mpType.Equals("Indices", StringComparison.InvariantCultureIgnoreCase))
{
    MAE_Repo.InsertNseIndicesPrice("Usp_tbl_Intraday_NseIndicesPrice", 0, Convert.ToInt32(res[0]), res[1], 
        SafeConvertToFloat(res[2]),
        SafeConvertToFloat(res[3]), 
        SafeConvertToFloat(res[4]), 
        SafeConvertToFloat(res[5]), 
        SafeConvertToFloat(res[6]),
        SafeConvertToFloat(res[7]), 
        SafeConvertToFloat(res[8]), 
        SafeConvertToFloat(res[9]), 
        SafeConvertToFloat(res[10]),
        Convert.ToDateTime(res[11]), 
        res[12], 
        timeStamp, 
        filename);
}
可选优化(如需存NULL而非0.0到MySQL)

如果业务允许float字段存空值,可调整逻辑用可空float类型,空值时传入DBNull.Value到存储过程:

  1. 辅助方法返回值改为float?
  2. 存储过程对应float参数允许为NULL,MySQL表对应字段设置为允许NULL
  3. 传参时判断如果值为null,参数赋值为DBNull.Value
注意事项

如果同时存在int类型列的空值,也可以参照相同逻辑写SafeConvertToInt的辅助方法做兼容处理,避免同类格式报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:36:03