Navicat 导入 Excel 默认只读取第一个 Sheet,需在导入向导“高级”中勾选 Specify sheet name 并准确输入 Sheet 名(含空格时用单引号包裹);批量导入应转 CSV 后用 SQL 脚本处理;字段类型错乱需在 Excel 中预设单元格格式并在 Navicat 中手动指定类型;追加数据缺失多因主键冲突或 NOT NULL 约束,应检查并调整插入方式及默认值。
Navicat 导入 Excel 时“只认第一个 Sheet”怎么办
navicat 默认只读取 excel 文件的第一个工作表(sheet1),即使你双击选中的是其他 sheet,后台仍按 sheet1 解析——这不是 bug,是它的默认行为。如果你的 excel 里多个数据表分散在不同 sheet,直接拖进去会漏数据。
- 导入前右键 Excel 文件 → “打开方式” → 用 Excel 打开,手动确认目标数据所在的 Sheet 名(比如
Data_2024) - 在 Navicat 的“导入向导”里,到“选择源”步骤时,**不要点“浏览”选文件,而要点“高级”按钮** → 勾选
Specify sheet name→ 输入准确的 Sheet 名(区分大小写,不能带空格或特殊符号) - 如果 Sheet 名含空格(如
Raw Data),必须用单引号包裹:'Raw Data',否则报错Invalid sheet name
一次导入多个 Excel 文件:别用“批量导入”,改用“运行 SQL 脚本”
Navicat 的“批量导入”功能(右键数据库 → “导入向导” → 多选 Excel)看似省事,实则会为每个文件单独建一个临时表、字段映射全得重配,且无法控制主键/重复逻辑。真正高效的做法是把 Excel 先转成 CSV,再用 LOAD DATA INFILE 或 INSERT INTO ... SELECT 合并。
- 用 Python 或 Excel 自带“另存为 CSV(逗号分隔)”批量转格式(注意编码选
UTF-8 with BOM,否则中文乱码) - 在 Navicat 中新建查询窗口,用
CREATE TEMPORARY TABLE建一个结构一致的中间表(字段名、类型、长度要和所有 Excel 的列对齐) - 逐个执行:
LOAD DATA INFILE '/path/to/file1.csv' INTO TABLE temp_data ...(路径必须是 MySQL 服务端可读路径,本地路径会报File not found) - 最后统一去重插入目标表:
INSERT IGNORE INTO real_table SELECT * FROM temp_data
字段类型错乱、日期变 0000-00-00?关键在 Excel 单元格格式和 Navicat 映射设置
Excel 里看着是“2024/05/20”,但底层可能是文本格式;Navicat 会按“第一行样本”自动推断类型,一旦首行是空或文字,整列就判为 VARCHAR,后续日期/数字全失效。
- 导入前,在 Excel 中选中整列 → 右键“设置单元格格式” → 明确设为“日期”或“数值”,并清除首行空白/注释行
- 在 Navicat 导入向导的“字段映射”页,**手动点击每一列的“类型”下拉框**,不要依赖自动识别:日期列强制选
DATE或DATETIME,数字列选INT/DECIMAL - 遇到
Incorrect datetime value: '2024-05-20 '(末尾有空格),在“高级”里勾选Trim whitespace,或提前用 Excel 的=TRIM()清洗
为什么“追加到现有表”后数据少了?检查主键冲突和 NULL 约束
选了“追加到现有表”,结果只进去了几百条,远少于 Excel 行数——大概率是主键(id)或唯一索引(order_no)冲突,Navicat 默认跳过冲突行,不报错也不提示。
- 导入前查目标表当前最大主键:
SELECT MAX(id) FROM target_table,对比 Excel 里id列是否从 1 开始、是否重复 - 在导入向导“高级”页,把
Insert method改成INSERT IGNORE(静默跳过)或REPLACE INTO(覆盖更新),避免中断 - 如果目标表字段定义了
NOT NULL但 Excel 有空单元格,Navicat 会因缺失值拒绝整行;提前用=IF(ISBLANK(A2),"NULL",A2)填充,或在映射时给该列设默认值''或0
真正卡住人的从来不是操作步骤多,而是 Excel 那些看不见的格式残留、Navicat 那些藏在“高级”里的开关、还有 MySQL 服务端路径权限这种跨环境细节。动手前先花两分钟看一眼 Sheet 名、字段实际格式、目标表结构,比反复重试快得多。

















