Navicat导出的CSV需调整设置才能被phpMyAdmin正确导入:字段分隔符设为,、文本标识符设为"并勾选“所有字段都用文本标识符包裹”、NULL值留空;phpMyAdmin导入时选CSV格式,字段分隔符填,,字段包裹符填",忽略首行并手动匹配列名。

不能直接导入 Navicat 导出的 CSV 到 phpMyAdmin —— 默认格式不兼容,必须先手动调整字段分隔符和引号规则。
Navicat 导出的 CSV 默认不满足 phpMyAdmin 的解析要求
Navicat 默认用 " 包裹字段、用 , 分隔、空值写成 NULL 或空字符串,而 phpMyAdmin 的「CSV 使用 LOAD DATA」导入模式严格依赖 MySQL 的 LOAD DATA INFILE 语法,对转义、NULL 表示、行结束符敏感。直接上传会报错 Invalid column count 或跳过大量行。
- Navicat 导出时勾选了「导出 NULL 值为字符串
NULL」→ phpMyAdmin 会把它当普通字符串插入,不是真正的NULL - 字段含换行符或逗号但没统一加双引号 → phpMyAdmin 解析错位
- 编码是
UTF-8 with BOM→ phpMyAdmin 可能读出乱码或首列多出
导出前在 Navicat 中必须改这三项设置
打开 Navicat「导出向导」→「格式设置」页,按以下配置导出(否则后续修 CSV 成本更高):
- 字段分隔符:选
,(不要用;或\t) - 文本标识符:设为
"(必须双引号,且要勾选「所有字段都用文本标识符包裹」) - NULL 值表示:留空(即空字段直接输出为空,不填
NULL字符串) - 额外建议:编码选
UTF-8(不含 BOM),行尾选LF(Unix 格式)
phpMyAdmin 中导入时的关键操作点
进对应数据库 →「导入」标签页 → 上传 CSV 文件后,重点调整下方「格式特定选项」:
立即学习“PHP免费学习笔记(深入)”;
- 「格式」选
CSV(不是 CSV using LOAD DATA) - 「字段分隔符」填
, - 「字段包裹在」填
" - 「字段终止于」保持默认
\n(若文件是 Windows 换行,可试\r\n) - 「忽略第一行」勾选(如果导出含表头)
- 「列名」手动匹配:右侧下拉必须和目标表字段顺序/名称一致,不能靠自动识别
注意:CSV using LOAD DATA 方式虽快,但要求服务器开启 LOCAL INFILE 且权限足够,多数共享主机禁用,强行选它大概率报错 The used command is not allowed with this MySQL version。
导入失败时最该检查的三处
上传后提示「未插入任何行」或「部分插入」,别急着重导,先看这几项:
- phpMyAdmin 显示的「已处理 X 行」数字是否远小于 CSV 行数?→ 很可能是某行字段数不匹配,用文本编辑器打开 CSV,搜
"看是否有未闭合的引号 - 目标表有
NOT NULL字段但 CSV 对应列为空 → phpMyAdmin 默认填0或空字符串,违反约束,需提前在表中设默认值或改 CSV - 时间字段(如
datetime)值是2024-01-01 12:00:00没问题,但2024/01/01或01-01-2024会被当非法值跳过
真正麻烦的是字段类型隐式转换失败——比如把带千分位逗号的数字 1,234.56 导入 DECIMAL 字段,phpMyAdmin 不会报错,但存进去变成 1。这种得导完立刻查数据,不能只看导入成功提示。



















