navicat导入向导的“预览”仅显示原始裸数据,不执行类型转换、空值处理或格式解析,无法反映真实映射结果;必须通过勾选首行字段名、逐项核对目标类型与空值策略,并用小样本实测入库后select验证。
navicat 导入向导里没有真正的“预览映射”功能,所谓预览只是字段名列表和初始顺序匹配,不能反映实际数据内容或类型转换效果。
为什么点「预览」看不到真实映射结果
Navicat 的「预览数据」按钮(通常在字段映射页右下角)只读取前几行原始内容,不做类型解析、不应用日期格式、不处理空值转换、也不执行\N识别或<ignore></ignore>逻辑。它显示的是未经任何映射规则干预的“裸数据”,容易误判列对齐是否正确。
- 例如 Excel 里一列写的是
"2024/03/15",预览里看着像日期,但若没在映射页手动设「数据类型转换 → DATE」,导入时仍会当字符串塞进 VARCHAR 字段 - CSV 中某列为
""(空字符串),预览里显示为空白,但若目标字段是INT NOT NULL且未设默认值,实际导入会直接报错Incorrect integer value: '' - Access 表字段名带方括号如
[客户编号],预览里可能显示为乱码或原样保留,但若没勾选「移除标识符括号」,导入后字段名在 MySQL 里非法
真正有效的字段映射验证方法
别依赖「预览」,要靠三步交叉核对:
- 在「字段映射」页左侧确认源字段名(如 Excel 第一行)已正确识别——必须勾选「使用第一行作为字段名」,否则显示为
Field 1、Field 2 - 逐个点击右侧目标字段,在弹出的设置面板中检查:
类型是否匹配(比如时间列不能留VARCHAR)、是否允许 NULL与源数据空值策略一致、默认值或<ignore></ignore>是否已显式设置 - 对关键列(尤其是时间、数字、长文本)临时建一张测试表,用相同映射配置导入 10 行数据,再
SELECT * FROM test_table LIMIT 10查看实际入库值——这才是唯一可靠验证
哪些场景下「预览」完全不可信
以下情况预览内容和最终结果必然不一致,必须跳过预览直接实测:
- 源文件含换行符:预览里
\n显示为断行,但若没勾选「保留换行符」,导入后全被转成空格 - DBF 或 Access 的 MEMO 字段:预览只显示前 255 字符,实际导入可能截断或报错
Data too long - Excel 公式列(如
=A1&"-"&B1):预览显示计算结果,但若没提前「选择性粘贴为数值」,Navicat 可能读到公式字符串而非值 - 日期格式含中文:如
"2024年03月15日",预览看着正常,但若「高级设置」里没填yyyy年MM月dd日,导入后变0000-00-00
字段映射不是一次勾选就完事的动作,它本质是一组运行时规则。Navicat 不提供映射逻辑的沙箱预演,所有转换行为只有落到真实数据上才可见。最省时间的做法:小样本 + 真查库,而不是反复点预览猜结果。











