You need to enable JavaScript to run this app. Python用mysql-connector导入CSV到MySQL出现数据错位、异常问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Python用mysql-connector导入CSV到MySQL出现数据错位、异常问题求助

问题根因定位

所有数据异常可直接对应到无歧义的技术原因,不存在模糊排查空间:

  • CSV实际格式和导入配置不匹配:使用soffice转换CSV时参数配置为44(ASCII值,对应逗号分隔),但LOAD DATA语句中声明字段分隔符为制表符\t。解析时整行内容无法正确拆分,导致值从第二列(OrderDate)开始整体向后错位,最终出现所有日期为NULL、数值串列的问题。
  • 未跳过CSV表头:LOAD DATA语句未配置表头忽略规则,CSV第一行的列名被转换成0值/空值,当成普通业务数据导入表中。
  • 无显式列映射:默认按表定义的字段顺序匹配CSV列,只要CSV列顺序和表定义存在偏移,就会出现数值串列——比如本该落到LongTermScore列的500、750实际是LoanSum字段的值,本该落到RequestedAmount的6700因为整体错位被截成末尾700,落到RequestedPeriod列。
  • 日期格式未适配:即使日期值正确落到对应列,LibreOffice转出的Excel日期格式通常为YYYY/MM/DD,MySQL默认DATE类型仅识别YYYY-MM-DD格式,解析失败就会写入NULL值。
  • 换行符适配缺失:不同系统生成的CSV换行符存在差异,未在LOAD DATA中声明行结束符,会导致最后一列的值错位、空行导入的问题。
可落地修复方案
  1. 修正CSV转换命令,不要默认猜文件格式
    调整soffice转换参数,把原逗号分隔的配置换成明确的制表符分隔,保证CSV格式符合导入要求:
    soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":9,34,76 /home/user/Desktop/TTFfw.xlsx
    转换完成后执行head -n 2 /home/man/TTF.csv查看实际分隔符,确认每行列数和表字段数一致,不要凭代码配置推断文件格式。
  2. 重构LOAD DATA语句,覆盖所有已知异常点
    修正后可直接运行的代码如下:
    cursor.execute("""
    LOAD DATA LOCAL INFILE '/home/man/TTF.csv' 
    INTO TABLE test_task 
    FIELDS TERMINATED BY '\t' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    -- 跳过CSV的表头行
    IGNORE 1 ROWS
    -- 显式匹配CSV列和表字段,防止顺序错位
    (Project, @raw_order_date, orderid, ClientID, IsRepeat, IsBlocked, IsManual, AutoDecision, ManualApprove, IsLoan, ShortTermAmount, ShortTermPeriod, LongTermAmount, LongTermPeriod, RequestedAmount, RequestedPeriod, LoanSum, Period, ShortTermScore, LongTermScore)
    -- 自定义日期解析规则,适配LibreOffice转出的日期格式
    SET OrderDate = STR_TO_DATE(@raw_order_date, '%Y/%m/%d')
    """)
    
    注:如果CSV中日期格式为横杠分隔的YYYY-MM-DD,把STR_TO_DATE的格式参数改为'%Y-%m-%d'即可。
  3. 增加前置校验逻辑,提前发现错位问题
    • 导入前用pandas读取CSV前3行,统计列数、列名,和数据库表的字段列表做比对,列数不匹配直接中断流程排查。
    • 导入完成后立刻查询1-2行数据,和CSV原始行逐列比对,确认无错位再执行全量导入,不要等数据全部导完再校验。
  4. 调整表约束降低排查成本
    暂时移除OrderDate列的NOT NULL约束,导入完成后统计该列的非空率,如果非空率为0,说明日期值存在格式或列错位问题,可第一时间定位,避免因为MySQL非严格模式下解析失败不报错,等全量导完才发现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 07:45:06