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

MariaDB导入网络流量CSV时字段数据类型匹配及报错求助

问题核心错误点

当前报错全部来自表结构错配、导入规则缺失两个问题,对应三类报错的根因:

  • 错误4025 JSON校验失败:pandas输出的object类型指代普通字符串,不是结构化JSON格式。将IP、协议、流量详情这类纯文本字段设置为JSON类型后,MariaDB会强制校验输入内容必须符合JSON语法(要求键值对用双引号包裹、特殊字符转义),但CSV中存储的192.168.1.1、TCP这类纯字符串完全不符合JSON规范,直接触发约束报错。
  • 错误1366 类型不匹配:定义的表字段顺序和CSV原生字段顺序不一致——CSV字段顺序是No.、Time、Source、Destination、Protocol、Length、Info,但原表结构把Info放在了Length前面,导入时如果不指定列映射,会把字符串类型的Info内容塞进整型的Length字段,触发类型不匹配。
  • 错误1062 主键重复:要么是之前导入失败的残留数据未清空,要么是字段错位后非序号列的值被塞入主键字段触发重复,少数情况是CSV中No.列本身存在重复值。
正确操作步骤

第一步:重建匹配字段类型的表

不要给普通文本字段设置JSON类型,IP地址字段用VARCHAR兼容IPv4/IPv6长度,长文本的流量详情用TEXT类型避免截断,直接执行以下SQL:

DROP TABLE IF EXISTS table_prueba;
CREATE TABLE table_prueba (
    `No.` BIGINT PRIMARY KEY,
    `Time` FLOAT,
    `Source` VARCHAR(45),
    `Destination` VARCHAR(45),
    `Protocol` VARCHAR(20),
    `Length` BIGINT,
    `Info` TEXT
) DEFAULT CHARSET=utf8mb4;

若确认CSV中No.列本身存在重复值,将主键改为自增ID即可规避重复报错:

DROP TABLE IF EXISTS table_prueba;
CREATE TABLE table_prueba (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    `No.` BIGINT,
    `Time` FLOAT,
    `Source` VARCHAR(45),
    `Destination` VARCHAR(45),
    `Protocol` VARCHAR(20),
    `Length` BIGINT,
    `Info` TEXT
) DEFAULT CHARSET=utf8mb4;

第二步:执行正确的导入命令

LOAD DATA必须明确指定分隔符、忽略表头、列映射关系,避免字段错位,根据CSV生成系统调整换行符参数:

LOAD DATA LOCAL INFILE '替换为你的CSV文件绝对路径'
INTO TABLE table_prueba
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
-- Windows导出的CSV用'\r\n',Linux/macOS导出的CSV用'\n'
LINES TERMINATED BY '\r\n'
-- 忽略第一行表头
IGNORE 1 LINES
-- 列顺序必须和CSV内的字段顺序完全一致
(`No.`, `Time`, `Source`, `Destination`, `Protocol`, `Length`, `Info`);
导入后校验

导入完成后执行SHOW WARNINGS;查看剩余警告,如果没有严重错误,执行SELECT COUNT(*) FROM table_prueba;核对行数和CSV数据行数是否一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:39:15