MySQL 提供了多种命令行工具用于数据导出,其中最常用的是 mysqldump
,它功能强大且灵活,能够导出数据库结构、数据或两者,并支持多种格式。SELECT ... INTO OUTFILE
命令也可用于将查询结果直接导出到文件,适用于特定场景的数据导出需求,以下是关于 MySQL 命令行导出的详细说明。

使用 mysqldump
导出数据
mysqldump
是 MySQL 自带的逻辑备份工具,通过它可以导出单个表、整个数据库或多个数据库,其基本语法为 mysqldump -u用户名 -p密码 [选项] 数据库名 [表名] > 导出文件路径
。
导出整个数据库
若需导出指定数据库的所有表结构和数据,可使用以下命令:
mysqldump -u root -p mydatabase > mydatabase_backup.sql
执行后会提示输入密码,导出结果包含创建数据库、表结构及插入数据的 SQL 语句。
导出特定表
若仅需导出数据库中的部分表,可在数据库名后添加表名,多个表用空格分隔:

mysqldump -u root -p mydatabase table1 table2 > tables_backup.sql
仅导出表结构(不包含数据)
添加 --no-data
选项可跳过数据导出,仅保留表结构:
mysqldump -u root -p --no-data mydatabase > mydatabase_structure.sql
仅导出数据(不包含表结构)
使用 --no-create-info
选项可跳过 CREATE TABLE 语句,仅导出数据:
mysqldump -u root -p --no-create-info mydatabase > mydatabase_data.sql
导出多个数据库
通过 --databases
选项可同时导出多个数据库,数据库名之间用空格分隔:
mysqldump -u root -p --databases db1 db2 > multi_dbs_backup.sql
导出所有数据库
添加 --all-databases
选项可导出 MySQL 服务器中的所有数据库:

mysqldump -u root -p --all-databases > all_dbs_backup.sql
导出为 CSV 或其他格式
mysqldump
默认导出为 SQL 格式,若需导出为 CSV,可结合 SELECT ... INTO OUTFILE
命令(需确保 MySQL 有文件写入权限):
SELECT * FROM mydatabase.table1 INTO OUTFILE '/tmp/table1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
导出的 CSV 文件默认存储在 MySQL 服务器的文件系统中,需通过 scp
或 mysql -e
命令下载到本地。
常用 mysqldump
选项说明
选项 | 说明 |
---|---|
-u |
指定 MySQL 用户名,如 -u root |
-p |
提示输入密码,若密码后直接跟字符串(无空格),如 -p123456 ,但推荐交互式输入 |
-h |
指定 MySQL 服务器主机名,默认为 localhost |
-P |
指定端口号,默认为 3306 |
--compact |
简化输出,去除注释和空行 |
--single-transaction |
适用于 InnoDB 表,导出时开启事务,避免锁表 |
--routines |
包含存储过程和函数 |
--triggers |
包含触发器 |
--hex-blob |
使用十六进制格式导出二进制字段 |
导出后的数据恢复
导出的 SQL 文件可通过 mysql
命令恢复:
mysql -u root -p mydatabase < mydatabase_backup.sql
相关问答 FAQs
问题 1:导出大表时如何避免内存溢出?
解答:使用 mysqldump
的 --single-transaction
选项(适用于 InnoDB 表)可避免锁表和内存问题,同时通过 --quick
选项逐行读取数据,减少内存占用。
mysqldump -u root -p --single-transaction --quick mydatabase big_table > big_table_backup.sql
问题 2:如何导出数据并压缩以节省空间?
解答:可通过管道将 mysqldump
的输出直接传递给压缩工具(如 gzip
),实现边导出边压缩。
mysqldump -u root -p mydatabase | gzip > mydatabase_backup.sql.gz
恢复时需先解压:
gunzip < mydatabase_backup.sql.gz | mysql -u root -p mydatabase