MySQL 数据导出最常用、最直接的方式是使用 mysqldump 命令行工具,它能生成包含 CREATE TABLE 和 INSERT 语句的标准 SQL 文件,适用于备份、迁移或跨环境同步。
导出单个数据库(含表结构和数据)
这是最基础也最常用的导出方式。确保你有对应数据库的 SELECT 权限,并能访问 MySQL 服务器命令行:
基本语法:mysqldump -u 用户名 -p 数据库名 > 导出文件.sql 执行后会提示输入密码,输入正确密码后开始导出 例如导出名为 testdb 的数据库:mysqldump -u root -p testdb > testdb_backup.sql 导出文件默认不含 CREATE DATABASE 语句,恢复时需先创建数据库(或加 --databases 参数)只导出数据(不带建表语句)
若只需数据用于其他系统导入(如 Excel 处理、ETL 工具),可跳过 DDL,用 --no-create-info 参数:
mysqldump -u root -p --no-create-info testdb > data_only.sql 输出只有 INSERT 语句,表必须已存在才能成功导入 配合 --skip-extended-insert 可让每行 INSERT 独立,便于查看或部分编辑导出指定表或部分数据
无需导出整个库时,可精准控制范围:
导出多个表:mysqldump -u root -p testdb table1 table2 > tables_backup.sql 导出满足条件的数据(如最近一周订单):mysqldump -u root -p --where="order_time >= '2024-06-01'" testdb orders > recent_orders.sql 注意:WHERE 条件中字符串需手动加引号,且避免使用特殊字符或未转义的单引号导出为 CSV 格式(适合表格软件处理)
mysqldump 不直接支持 CSV,但可通过 MySQL 客户端的 SELECT ... INTO OUTFILE 实现:
登录 MySQL 后执行:SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; 该操作要求 MySQL 有写入目标路径的权限,且文件生成在服务端(不是本地电脑) 更安全的替代方式是用 mysql -u user -p -e "SELECT ..." database > output.csv,再用 sed/awk 清理制表符