在数据库管理工作中,导出数据是一项常见且重要的任务,无论是数据备份、迁移还是分析,都离不开对数据库数据的导出操作,相较于图形化界面工具,命令行操作具有高效、灵活、可自动化脚本化等优势,尤其适合处理大规模数据或需要批量操作的场景,本文将详细介绍如何使用命令行导出不同类型数据库(如MySQL、PostgreSQL、MongoDB等)的数据,涵盖基础命令、参数说明及实际应用场景。

MySQL数据库导出
MySQL是最常用的关系型数据库之一,其命令行导出工具主要是mysqldump。mysqldump功能强大,支持导出整个数据库、特定表或查询结果,并可选择多种格式(如SQL、CSV等)。
导出整个数据库
mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件名].sql
-u:指定MySQL用户名。-p:后跟密码(注意-p和密码之间无空格,也可单独写-p,执行后输入密码)。[数据库名]:要导出的数据库名称。>:输出重定向,将结果保存到文件中。
导出名为testdb的数据库到testdb_backup.sql:
mysqldump -u root -ptest123 testdb > testdb_backup.sql
导出特定表
mysqldump -u [用户名] -p[密码] [数据库名] [表名1] [表名2] > [备份文件名].sql
导出testdb中的users和orders表:
mysqldump -u root -ptest123 testdb users orders > tables_backup.sql
导出为CSV格式
mysql -u [用户名] -p[密码] -e "SELECT * FROM [表名] INTO OUTFILE '[文件路径].csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" [数据库名]
-e:执行SQL语句。INTO OUTFILE:指定输出文件路径(需确保MySQL有写入权限)。FIELDS TERMINATED BY:字段分隔符(默认为制表符,此处改为逗号)。ENCLOSED BY:字段包围符(如双引号,避免字段中包含分隔符时出错)。LINES TERMINATED BY:行终止符(默认为\n)。
导出users表为CSV:

mysql -u root -ptest123 -e "SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" testdb
导出结构或数据仅
- 仅导出结构:
mysqldump -u [用户名] -p[密码] --no-data [数据库名] > [结构文件].sql
- 仅导出数据:
mysqldump -u [用户名] -p[密码] --no-create-info [数据库名] > [数据文件].sql
PostgreSQL数据库导出
PostgreSQL常用的命令行导出工具是pg_dump和pg_dumpall。pg_dump用于导出单个数据库,pg_dumpall用于导出所有数据库(包括角色和表空间信息)。
导出单个数据库
pg_dump -U [用户名] -h [主机名] -p [端口] -F [格式] [数据库名] > [备份文件名]
-U:指定PostgreSQL用户名。-h:数据库主机名(默认为localhost)。-p:端口号(默认为5432)。-F:输出格式,可选c(自定义归档)、p(纯SQL脚本,默认)、d(目录格式)等。
导出testdb为SQL脚本:
pg_dump -U postgres -h localhost -p 5432 testdb > testdb_backup.sql
导出为自定义归档格式(适合快速备份和恢复)
pg_dump -U [用户名] -Fc [数据库名] > [备份文件].dump
导出所有数据库
pg_dumpall -U [用户名] > [全量备份文件].sql
MongoDB数据库导出
MongoDB是NoSQL数据库,其导出工具为mongoexport,支持导出JSON、CSV等格式。
导出集合为JSON
mongoexport --host [主机名]:[端口] -u [用户名] -p [密码] --authenticationDatabase [认证数据库] -d [数据库名] -c [集合名] --out [输出文件].json
--host:MongoDB主机和端口(默认为localhost:27017)。-u/-p:用户名和密码(如无认证可省略)。--authenticationDatabase:认证数据库(通常为admin)。-d:数据库名。-c:集合名(相当于关系型数据库的表)。--out:输出文件路径。
导出testdb中的users集合:

mongoexport --host localhost:27017 -u admin -p admin123 --authenticationDatabase admin -d testdb -c users --out users.json
导出为CSV格式
mongoexport --host [主机名]:[端口] -u [用户名] -p [密码] -d [数据库名] -c [集合名] --type=csv --fields [字段名1],[字段名2] --out [输出文件].csv
--type=csv:指定输出格式为CSV。--fields:指定导出的字段(多个字段用逗号分隔)。
导出users集合的name和email字段:
mongoexport --host localhost:27017 -u admin -p admin123 -d testdb -c users --type=csv --fields name,email --out users.csv
导出数据时的注意事项
- 权限控制:确保执行导出命令的用户具有足够的权限(如
SELECT权限、FILE权限等)。 - 文件路径:导出文件路径需存在且用户有写入权限,避免因路径错误导致导出失败。
- 数据一致性:对于大型数据库,导出过程中应尽量减少数据写入操作,避免导出的数据与实际数据不一致,可通过锁定表(MySQL的
--lock-tables参数)或使用--single-transaction(InnoDB引擎)确保一致性。 - 压缩备份:为节省存储空间,可结合压缩工具(如
gzip)使用:mysqldump -u root -ptest123 testdb | gzip > testdb_backup.sql.gz
相关问答FAQs
问题1:导出MySQL数据库时,如何避免因表锁定导致业务中断?
解答:对于InnoDB引擎的表,可以使用--single-transaction参数,该参数通过开启事务实现一致性读,避免锁定表。
mysqldump -u root -ptest123 --single-transaction testdb > testdb_backup.sql
注意:该参数仅适用于InnoDB,且导出过程中事务会持续占用资源,需确保磁盘空间足够。
问题2:MongoDB导出数据时,如何过滤条件导出特定文档?
解答:使用mongoexport的--query参数,传入JSON格式的查询条件,导出users集合中age大于25的文档:
mongoexport --host localhost:27017 -u admin -p admin123 -d testdb -c users --query '{"age": {"$gt": 25}}' --out users_filtered.json--query参数支持MongoDB的查询操作符,如$gt(大于)、$lt(小于)、$in(包含)等,可实现灵活的数据过滤。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/435377.html<





