必须使用「自定义导出」模式且格式选「CSV」,设置Fields terminated by等选项才生效;导出前需统一编码为UTF-8无BOM、换行符为\n,并确保含特殊字符的字段被双引号包裹。
导出时Fields terminated by不生效?先确认是否用了「自定义导出」模式
phpmyadmin 的「快速导出」根本不会显示分隔符设置项,fields terminated by、fields enclosed by、lines terminated by 这三项只在「自定义导出」下才可用。直接点「执行」就走默认流程,导出的 csv 很可能用制表符或空格分隔,而不是你想要的逗号。
- 进入表或数据库页面 → 点「导出」标签页 → 在「导出方法」下拉菜单中必须选「自定义」
- 格式必须选「CSV」,不是「CSV for MS Excel」——后者会强制覆盖你的分隔符配置
- 勾选「将列名放在首行」,否则分隔符相关设置大概率被忽略
-
Fields escaped by建议留空,某些版本(如 4.9)与Fields enclosed by冲突,导致引号失效
导入时字段错位或报#1136错误?检查CSV原始格式是否匹配phpMyAdmin解析预期
Navicat、Excel 或其他工具导出的 CSV 经常带 BOM 头、Windows 换行符(\r\n)、双引号包裹字段,而 phpMyAdmin 的 CSV 解析器对这些极其敏感。常见症状是第一行变空、列数不匹配、中文字段被截断。
- 用 VS Code 或 Notepad++ 打开 CSV → 编码转为「UTF-8 无 BOM」→ 换行符统一转为
\n(Unix 格式) - 删除首行前后多余空格,字段名避免中文、括号、空格;推荐用
user_id而非User ID - 导入页面中:
Columns separated with:填,,Column names in first line必须勾选,Enclosed by:填"或留空(若导出时没加引号) - 如果字段值本身含换行符,必须确保它们被双引号包裹,否则 phpMyAdmin 会把一行切两行
中文乱码 + 分隔符“消失”?本质是字符集没对齐,不是分隔符问题
看到 䏿,value 这种,不是逗号丢了,是浏览器按 ISO-8859-1 解析了 UTF-8 字节流。分隔符本身是 ASCII,乱码后人眼误判而已。
- 导出前,在「格式特定选项」区域找到
Character set of the file,明确选utf-8 - 导出后,用记事本打开 → 「另存为」→ 编码选「UTF-8 with BOM」(尤其给 Excel 用)
- 若仍乱码,说明 phpMyAdmin 配置里
$cfg['Export']['charset']被硬编码为latin1,需改config.inc.php或联系管理员 - 导入时同样要确认目标表字符集为
utf8mb4,且排序规则匹配(如utf8mb4_unicode_ci)
字段含逗号或换行符却没被引号包裹?phpMyAdmin不会自动判断,得靠源头控制
phpMyAdmin 不像 pandas 那样动态检测内容是否需要封装,它只按你设的 Fields enclosed by 统一对所有字段加引号。如果字段值含 , 或 \n 却没被引号包住,导入必然错行。
从 CSV 数据集生成图数据库加载器和三元组映射。将表格 CSV 数据转换为图数据库可直接使用的节点、边和三元组。
- 导出前确保数据已清洗:地址类字段如
"杭州,西湖区"必须带双引号,不能裸写 - MySQL 命令行导出更可控:
SELECT * INTO OUTFILE '/tmp/data.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table_name; - 若用 Excel 导出,务必通过「数据 → 从文本/CSV」向导导入(而非双击),并勾选「引号作为文本限定符」
- 字段含双引号本身(如
He said "Hi"),必须写成"He said ""Hi""",且整个字段被双引号包裹
实际操作中最容易被跳过的环节是编码转换和换行符统一——哪怕分隔符设对了,BOM 或 \r\n 一存在,phpMyAdmin 就会静默失败,报错还不明显。
立即学习“PHP免费学习笔记(深入)”;


















