概述
本文档介绍了如何从 MySQL 数据库导出数据以及如何将数据导入 MySQL 数据库。你可以在官方的 MySQL 文档中了解更多相关信息。
使用 mysqldump 导出数据
mysqldump 是一个原生的 MySQL 命令行实用工具,你可以用它从 MySQL 数据库导出数据。要查看此命令的所有选项,请运行
mysqldump --help
请注意,你的 MySQL 安装默认包含 mysqldump,在 macOS 上有时位于 /usr/local/mysql/bin 中。如果命令未被自动识别,你可以通过指向该目录来调用命令 /usr/local/mysql/bin/mysqldump,或者 将其添加到你的 PATH,这样你就可以在不指定目录的情况下运行 mysqldump。
来自 MySQL 文档
mysqldump客户端实用程序执行逻辑备份,生成一组 SQL 语句,这些语句可以执行以重现原始数据库对象定义和表数据。它将一个或多个 MySQL 数据库转储以进行备份或传输到另一个 SQL 服务器。mysqldump命令还可以生成 CSV、其他带分隔符的文本或 XML 格式的输出。
基本命令如下所示
mysqldump DB_NAME > OUTPUT_FILE
你需要将 DB_NAME 和 OUTPUT_FILE 占位符替换为相应的值:
- 你的数据库名称
- 所需输出文件的名称(为获得最佳互操作性,应以
.sql结尾)
例如,要从名为 mydb 的数据库将数据从本地 MySQL 服务器导出到名为 mydb.sql 的文件,你可以使用以下命令
mysqldump mydb > mydb.sql
提供数据库凭据
你可以添加以下参数来指定 MySQL 数据库服务器的位置
| 参数 | 默认值 | 描述 |
|---|---|---|
--host (缩写: -h) | localhost | 服务器主机机器的地址 |
--port (缩写: -P) | - | MySQL 服务器监听的服务器主机机器端口 |
要对 MySQL 数据库服务器进行身份验证,你可以使用以下参数
| 参数 | 默认值 | 描述 |
|---|---|---|
--user (缩写: -u) | - | 数据库用户的名称。 |
--password (缩写: -p) | - | 触发密码提示。 |
例如,如果你想从具有以下 连接字符串 的 MySQL 数据库导出数据
mysql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus
你可以使用以下 mysqldump 命令
mysqldump --host ec2-46-137-91-216.eu-west-1.compute.amazonaws.com --port --user opnmyfngbknppm --password d50rgmkqi2ipus > backup.sql
请注意,此命令将触发一个提示,你需要在此处为提供的用户指定密码。
控制输出
在某些情况下,你可能不希望转储整个数据库,例如你可能希望
- 只转储实际数据,但排除 DDL(即定义数据库模式的 SQL 语句,如
CREATE TABLE,...) - 只转储 DDL,但排除实际数据
- 排除特定表
以下是这些场景中可以使用的一些命令行选项的概述
从 SQL 文件导入数据
使用 mysqldump 将 MySQL 数据库导出为 SQL 文件后,你可以通过将 SQL 文件导入 mysql 来恢复数据库状态
mysql DB_NAME < INPUT_FILE
请注意,你的 MySQL 安装默认包含 mysql,在 macOS 上有时位于 /usr/local/mysql/bin 中。如果命令未被自动识别,你可以通过指向该目录来调用命令 /usr/local/mysql/bin/mysql,或者 将其添加到你的 PATH,这样你就可以在不指定目录的情况下运行 mysql。
你需要将 DB_NAME 和 INPUT_FILE 占位符替换为相应的值:
- 你的数据库名称(必须事先创建具有该名称的数据库!)
- 目标输入文件的名称(可能以
.sql结尾)
例如
mysql mydb < mydb.sql
要进行身份验证,你可以使用上面讨论的 --user 和 --password 选项
mysql --user root --password mydb < mydb.sql
要事先创建一个数据库,你可以使用以下 SQL 语句
CREATE DATABASE mydb;
结论
从 MySQL 导出数据并再次导入以重新创建数据结构并填充数据库是迁移数据、备份和恢复或准备复制的好方法。了解 mysqldump 和 mysql 工具如何协同工作来完成此任务将帮助你在数据库边界之间传输数据。
