菜鸟科技网

MySQL导出命令行有哪些常用命令?

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

MySQL导出命令行有哪些常用命令?-图1
(图片来源网络,侵删)

使用 mysqldump 导出数据

mysqldump 是 MySQL 自带的逻辑备份工具,通过它可以导出单个表、整个数据库或多个数据库,其基本语法为 mysqldump -u用户名 -p密码 [选项] 数据库名 [表名] > 导出文件路径

导出整个数据库

若需导出指定数据库的所有表结构和数据,可使用以下命令:

mysqldump -u root -p mydatabase > mydatabase_backup.sql

执行后会提示输入密码,导出结果包含创建数据库、表结构及插入数据的 SQL 语句。

导出特定表

若仅需导出数据库中的部分表,可在数据库名后添加表名,多个表用空格分隔:

MySQL导出命令行有哪些常用命令?-图2
(图片来源网络,侵删)
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 服务器中的所有数据库:

MySQL导出命令行有哪些常用命令?-图3
(图片来源网络,侵删)
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 服务器的文件系统中,需通过 scpmysql -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
分享:
扫描分享到社交APP
上一篇
下一篇