Navicat 不支持直接导入 PDF,需先用工具(如 tabula-py、pdfplumber)转为 CSV/Excel;常见问题包括扫描件无文字、表格线缺失、数值含逗号被误判为字符串;导入时须手动核对字段映射、处理空值与时间格式;Advanced Settings 中 Stop on error、Truncate text data、Enable auto-increment 三选项影响数据完整性。
navicat 不能直接导入 pdf 报表到数据表——它压根不支持解析 pdf 内容。所谓“导入 pdf”,实际是绕道处理:先用外部工具把 pdf 转成结构化数据(如 csv/excel),再导入 navicat。
PDF 转表格失败的常见报错和原因
很多人卡在第一步,用在线工具或 Python 库(如 tabula-py、pdfplumber)转出空表、错行、乱码,根本不是 Navicat 的问题。
-
tabula.read_pdf()返回空列表 → PDF 是图片型(扫描件),不是文字型;需先 OCR - 字段名被截断或合并(如 “Customer Name” 变成 “CustomerNam”)→ 表格线缺失,
lattice=False模式误判为流式文本 - 数字列含逗号(如 “1,234.56”)导入后变成字符串 → Navicat 默认按字符串推断类型,不会自动识别数值格式
Navicat 导入时字段映射必须手动核对
即使源文件是干净的 CSV,Navicat 的自动映射也极不可靠——尤其当首行含空格、特殊符号或中文标题时。
- 导入向导里勾选
First row contains column names后,column_names实际可能被截断或转成小写(取决于 Navicat 版本) - 目标表字段类型若为
INT,但 CSV 中对应列含空值或 “N/A”,导入会中断;得提前在 Navicat 中把该字段设为NULL允许 - 时间字段(如 “2024-03-15 14:22”)必须匹配目标列的
DATETIME格式,否则全变成0000-00-00 00:00:00
高级设置里三个关键开关影响数据完整性
这些选项藏在 Navicat 导入向导最后一页的 Advanced Settings 展开区,不点开几乎没人调,但一错就丢数据。
-
Stop on error:默认勾选,遇到单条记录错误(如超长字符串)就终止整个导入;调试阶段建议取消勾选,先看日志定位哪几行有问题 -
Truncate text data:默认不勾选,但如果 CSV 中某字段长度超过目标列定义(如VARCHAR(50)),Navicat 不会报错,而是静默截断——肉眼很难发现 -
Enable auto-increment:如果目标表主键是AUTO_INCREMENT,但 CSV 里提供了 ID 列,必须取消勾选此项,否则 Navicat 会忽略你给的 ID,自增生成新值
真正麻烦的从来不是点击几次下一步,而是 PDF 原始质量、中间转换工具的边界 case、以及 Navicat 那些默认开启却不说清楚的“保护机制”。多导两次,比盯着向导点十次更省时间。










