应改用CSV或CSV for MS Excel格式导出,而非SQL格式;因“仅数据”在SQL格式下仍输出INSERT语句,而CSV格式默认只输出纯字段值,不带任何SQL语句。
导出时勾选“仅数据”但结果仍含 CREATE TABLE 怎么办
phpmyadmin 默认导出行为会把表结构(create table)和数据(insert)混在一起,即使你勾了“仅数据”,它实际指的是“不导出建表语句、视图、存储过程等结构定义”,但依然会保留 insert into `table_name` 这类语句——这不是纯文本数据,而是 sql 格式的数据。
真正要的是字段值用分隔符(如逗号、制表符)隔开的纯文本,比如 CSV 或 TSV。关键不是“仅数据”选项,而是导出格式本身:
- 选
CSV或CSV for MS Excel格式,它们默认只输出值,不带 SQL 语句 - 避免选
SQL格式,哪怕勾了“仅数据”,它输出的仍是INSERT语句 - 导出前确认表中无换行符或未转义引号,否则 CSV 行会错位
导出 CSV 时中文乱码或字段被双引号包围怎么调
phpMyAdmin 的 CSV 导出默认用 utf8mb4 编码,但 Windows 记事本常误判为 ANSI,打开就乱码;另外,字段含逗号、换行或引号时,它会自动用双引号包裹并转义,这是 CSV 规范行为,不是 bug。
解决方法:
- 导出时在“格式-specific options”里勾选
Put columns names in the first row(需要列名时) - 将
Columns separated with设为\t(制表符),再配合“文件编码:UTF-8(无 BOM)”,可大幅降低 Excel 自动识别错误概率 - 导出后用 VS Code 或 Notepad++ 打开,编码选 UTF-8,避免用系统记事本直接看
- 若必须用逗号分隔且字段干净(确定不含逗号/引号/换行),可取消勾选
Enclose fields in quotes
大表导出超时或内存溢出怎么办
phpMyAdmin 是基于 Web 的工具,导出过程受限于 max_execution_time、memory_limit 和 post_max_size。单表超 5 万行就容易卡住或报 502 Bad Gateway 或 Allowed memory size exhausted。
立即学习“PHP免费学习笔记(深入)”;
绕过方式很直接:
- 改用命令行
mysqldump:执行mysqldump -u user -p --no-create-info --skip-extended-insert database_name table_name > data.sql,再用sed或 Python 去掉INSERT INTO前缀,只留 VALUES 部分 - 在 phpMyAdmin 中分页导出:用
SELECT * FROM table_name LIMIT 0, 10000创建临时结果集,再导出该结果 - 禁用“压缩输出”选项(如果开启),减少 PHP 处理负担
导出的 CSV 文件 Excel 打开后所有内容挤在 A 列
这是 Excel 没正确识别分隔符导致的,尤其常见于用逗号分隔但未声明编码,或系统区域设置把逗号当小数点处理。
最稳的解法不是改导出设置,而是让 Excel 主动导入:
- Excel 中不双击打开 CSV,而是新建空白表 → 数据 → 从文本/CSV → 选择文件 → 在导入向导中手动指定分隔符(逗号或制表符)、编码(UTF-8)
- 导出时用
CSV for MS Excel格式,它会强制用GBK编码(仅限简体中文 Windows),兼容性更好但牺牲国际化 - 终极保险:导出选
JSON格式(phpMyAdmin 5.0+ 支持),再用 Python 或在线工具转 CSV,完全可控
导出纯文本数据这件事,本质是格式选择问题,不是功能开关问题。很多人卡在“仅数据”字面意思上,反复试 SQL 格式的各种勾选项,却没意识到 CSV 才是真正脱离 SQL 语法的纯文本载体。只要记住:要纯文本,就别碰 SQL 导出格式。



















