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

MySQL手动导入CSV遇列数据类型错误问题求助

解决MySQL 8.0导入COVID-19 CSV数据集的数值类型报错问题

1. 先排查CSV数据的异常格式

这是引发报错的核心原因,先检查数值列内容:

  • 排查非数值字符:比如千分位逗号(1,234.56)、空格、换行符,或是用NA/N/A/-表示的空值
  • 确认小数分隔符:必须是.(MySQL默认用.识别小数,若CSV用,会导致格式不匹配)
  • 核对负值格式:确保是-123这种标准格式,而非(123)这类会计写法

2. 修正CREATE TABLE语句适配数据特征

针对你提到的字段规则(每百万住院患者数:总长度8位+3位小数;新增病例数含负值),表结构可以这么定义:

CREATE TABLE covid_data (
    -- 其他列按需定义
    hospitalizations_per_million DECIMAL(8,3), -- 支持负值,精准匹配8位总长度+3位小数
    new_cases INT -- 新增病例用INT足够,数值过大则换BIGINT
);

如果CSV里用NA这类字符表示空值,导入时要替换为MySQL识别的NULL:

LOAD DATA INFILE '/path/to/your/covid_data.csv'
INTO TABLE covid_data
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' -- 若CSV字段用双引号包裹,必须添加此规则
LINES TERMINATED BY '\n'
IGNORE 1 ROWS -- 忽略表头行
(
    -- 按CSV列顺序对应表列,示例处理空值
    column1, column2, 
    @hospitalizations, @new_cases,
    columnN
)
SET 
    hospitalizations_per_million = NULLIF(@hospitalizations, 'NA'),
    new_cases = NULLIF(@new_cases, 'NA');

3. 解决Error 1265/1366的针对性方案

若仍报错,大概率是CSV存在隐藏异常字符或编码问题:

  • 用Notepad++等编辑器打开CSV,开启显示所有字符功能,检查行尾、字段分隔符是否统一
  • 将CSV编码转成UTF-8(MySQL默认支持UTF-8,避免编码不兼容导致的字符识别错误)
  • 若数值带千分位逗号,导入时先移除:
LOAD DATA INFILE '/path/to/your/covid_data.csv'
INTO TABLE covid_data
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(
    column1, column2, 
    @hospitalizations, @new_cases,
    columnN
)
SET 
    hospitalizations_per_million = REPLACE(@hospitalizations, ',', ''),
    new_cases = REPLACE(@new_cases, ',', '');

4. 修复Table Data Import Wizard无数据问题

  • 确认CSV路径正确,且文件未被其他程序占用
  • 导入时手动指定字段分隔符、文本包裹符、行终止符,不要依赖自动检测(自动识别常出错)
  • 选择「追加数据到表」或「替换现有数据」,确保目标表列数、顺序和CSV完全匹配

5. 验证数据有效性

导入后执行以下查询验证:

-- 检查数值列是否存在非法字符(若用varchar过渡过)
SELECT hospitalizations_per_million FROM covid_data WHERE hospitalizations_per_million REGEXP '[^0-9.-]';
-- 测试数值排序功能
SELECT * FROM covid_data ORDER BY new_cases DESC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:35:29