在日常开发和运维中,我们经常需要把mysql数据库里的某张表格导出到本地,用来备份数据或者拿给同事用Excel分析。下面介绍几种最常用且稳妥的做法。

使用mysqldump导出整张表
mysqldump是mysql自带的逻辑备份工具,可以连表结构带数据一起导出成sql文件。假如要把test库里的user表导出,命令如下:
# 导出test库中的user表结构和数据 mysqldump -u root -p test user > /tmp/user.sql # 只导出数据不要建表语句 mysqldump -u root -p -t test user > /tmp/user_data.sql
执行后会提示输入密码,完成后在/tmp目录就能看到导出的文件。这种方式适合需要重新导入到别的mysql库的场景。
使用SELECT INTO OUTFILE导出为文本
如果只想导出数据本身,并且希望生成CSV这类文本,可以用SELECT语句配合INTO OUTFILE。注意运行mysql的用户要对目标目录有写权限。
SELECT id, name, age FROM user INTO OUTFILE '/tmp/user.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'n';
上面语句会把user表三列以逗号分隔写成CSV。若遇到乱码,可在连接时指定utf8mb4字符集,例如登录时执行SET NAMES utf8mb4;再导出。
用客户端工具导出Excel
如果不习惯命令行,像Navicat、MySQL Workbench这类图形客户端都支持右键表名选择导出向导,能直接存成xlsx或csv。操作上就是选中表格,点导出,按提示选Excel格式和保存路径即可。
导出时的常见注意点
- 权限问题:INTO OUTFILE只能写到mysql服务端的secure_file_priv指定目录,可用SHOW VARIABLES LIKE 'secure_file_priv';查看。
- 字符集:中文环境建议统一用utf8mb4,避免Excel打开乱码。
- 数据量:超大表用mysqldump分表或加--where条件分批导出更稳。
小结
导出mysql表格并不复杂,备份迁移用mysqldump,拿数据给业务用SELECT INTO OUTFILE或客户端导Excel都可以。弄清自己要的是sql还是纯数据,选对应方法即可。