定宽文本导入必须选“固定宽度”模式,手动在预览行字符位置单击加断点,确认多行对齐后再映射字段,避免空格或不可见字符导致偏移。
定宽文本导入必须选“固定宽度”,不能靠自动识别
navicat 对空格或制表符分隔的文件会尝试自动检测分隔符,但对真正定宽(如每列严格占 10/8/12 个字符)的文本,它完全无法猜对——哪怕你肉眼看着整齐,它也会把多列合并成一列,或在中间硬切开字段。唯一可靠方式是主动切换导入模式:固定宽度。
操作路径:导入向导第 1 步选中 TXT 文件后,在「文件类型」下拉菜单里手动选 固定宽度,不是默认的「分隔符」或「自动检测」。
在预览界面用鼠标点击加断点,不是拖拽列头
进入第 2 步「字段映射」前,Navicat 会显示文本预览。很多人误以为要像 Excel 那样拖动列标题来调整,其实不对:这里必须用鼠标在预览行的**字符位置上直接单击**,每点一下就加一条垂直分割线(黑线),代表该处为字段边界。
常见错误:
- 在空白行或空格堆里乱点,导致断点错位
- 点了第一行就以为搞定,没往下拉看几行是否对齐(定宽文件偶尔有换行或缩进不一致)
- 断点加太多,把本该一列的内容切成两段(比如电话号码被中间切开)
建议:先拉到底部看 3–5 行样本,确认所有行在相同字符位置对齐,再统一加断点。
取消 f1/f2/f3 等默认字段时要核对实际列数
定宽导入后,Navicat 默认按断点数量生成 f1、f2、f3… 字段名。如果你的表只有 5 列,但加了 8 个断点,就会多出 3 个 f6–f8。这时不能只凭名字瞎删——得对照目标表结构,逐个确认哪些 fX 对应真实字段(比如 f2 是姓名、f4 是手机号),其余才取消勾选。
特别注意:f1 不一定对应表的第一列;顺序完全取决于你加断点的先后,而不是字段名数字大小。
空格列、对齐符、不可见字符会导致断点偏移
定宽文件常混入全角空格、不间断空格( )、零宽空格,或右对齐时补的空格。这些在预览里看不见,但会让断点实际落在错位位置,导致后续所有列偏移。
解决办法:
- 用 Notepad++ 打开原 TXT,开启「显示所有字符」(
视图 → 显示符号 → 显示所有字符),检查是否有异常空格或控制符 - 若发现大量右对齐补空,可先用正则
\s+$替换掉每行末尾空格,再重新加断点 - 实在对不齐,不如转成 CSV:用脚本按固定宽度切分后加引号和逗号,再用分隔符模式导入更稳
定宽导入本质是位置游戏,没有表头、没有类型提示、不校验逻辑,错一位,后面全废——宁可花两分钟验证三行样本,也别信“看起来差不多”。











