navicat导入excel时需在导入向导第三步「高级」中同时勾选“跳过错误的记录”和“继续导入其余记录”才生效;仅解析类错误(如日期格式错、文本插int字段)可被跳过,主键冲突、not null违例等数据库约束错误不适用该机制。

Navicat 本身没有 continue 关键字或编程式控制语句,所谓“用 continue 跳过错误行”其实是对底层逻辑的误读。实际可用的是导入向导中两个明确勾选的选项,它们共同实现“跳过当前错误行并继续处理后续数据”的效果。
关键设置:必须同时启用两项
在 Navicat 导入 Excel 的第三步「高级」选项中:
- 勾选“跳过错误的记录”:让 Navicat 放弃解析失败的某一行(如日期格式错、数字超长、空字符串插整型字段)
- 勾选“继续导入其余记录”:确保不因单条出错就中断整个流程;若只选前者不选后者,导入仍会在首个错误处停止
启用后,日志底部会显示类似 Skipped 3 records due to errors 的提示,说明机制已生效。
哪些错误能被真正跳过?
仅限“解析类错误”,即 Navicat 在读取 Excel 内容时无法转换为对应字段类型的情况:
- Excel 中写的是
"2024-02-30",目标字段是 DATE 类型 → 可跳过 - 单元格填了
"abc",却往 INT 字段里导 → 可跳过 - 数值列含逗号分隔符(如
"1,234"),而数据库期望纯数字 → 可跳过
但以下情况不会被跳过,因为属于数据库执行层报错:
- 主键重复、唯一索引冲突(需换“插入或更新”模式,或提前去重)
- NOT NULL 字段在 Excel 中为空,且目标表未设默认值 → 视为约束违反,不走“跳过错误记录”逻辑
- 字段长度超限(如 VARCHAR(10) 插入 15 个字符)→ 部分版本可能报错中断,建议目标字段预留余量
前置清理比依赖跳过更可靠
很多报错其实源于 Excel 结构不规范,这类问题跳过选项也无能为力:
- 合并单元格 → 数据错位或丢失,务必在 Excel 中取消合并,用「填充」向下复制代替
- 空行穿插在数据中间 → Navicat 可能截断,删除所有空行(包括首尾)
- 表头不在第 1 行 → 在导入向导第二步手动设置「起始行号」,例如填
2 - 使用了带坐标的范围(如
Sheet1$A2:C100)→ Navicat 不识别,改用Sheet1$全表引用
字段类型要留余地
跳过是否生效,和目标表字段定义强相关:
- 把原本是 DATE 的字段临时改成 VARCHAR,可大幅降低解析失败率,导入完成后再清洗转换
- 数值类字段若不确定精度,优先用 DECIMAL 或 TEXT 存储,避免 INT/OVERFLOW 报错
- 文本字段开启 UTF8MB4,防中文、emoji 导入异常











