You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV导入MySQL Workbench时INT类型year列被截断问题求助

解决MySQL导入CSV时year列数据截断的问题

1. 排查CSV文件Year列的实际数据

  • 打开CSV文件逐行检查Year列,确认是否存在以下问题:
    • 非数字内容(比如字符串、空格、特殊符号、制表符)
    • 用NA表示空值(MySQL的INT列无法识别NA字符串,会触发截断)
    • 超出INT范围的数值(INT的取值范围是-2147483648到2147483647)

2. 修正CSV中的非法数据

  • 将Year列的NA替换为空白(导入时MySQL会自动识别为NULL),或直接写入NULL(需确保CSV支持该格式)
  • 删除Year列中的所有非数字字符,保证每一行的Year值都是合法整数

3. 调整MySQL Workbench的导入配置

  • 在导入向导中确认字段映射:CSV的Year列需对应表中的year字段,数据类型选择INT
  • 勾选允许空值选项(若存在空的Year值)
  • 可临时开启跳过错误行,先导入正常数据,再单独处理报错行

4. 临时调整MySQL的sql_mode

若因严格模式导致截断报错,可临时关闭严格模式:

SET sql_mode = '';

导入完成后恢复原有sql_mode(示例为默认配置):

SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

5. 预处理CSV后再导入

如果数据量较大,可用工具或脚本清洗数据,比如Python脚本替换NA为空:

import csv

with open('olympic_history.csv', 'r') as infile, open('cleaned_olympic_history.csv', 'w', newline='') as outfile:
    reader = csv.DictReader(infile)
    writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames)
    writer.writeheader()
    for row in reader:
        if row['Year'] == 'NA':
            row['Year'] = ''
        writer.writerow(row)

之后导入清洗后的cleaned_olympic_history.csv文件即可


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:55:22