MySQL 如何导出数据库 - MySQL 系列教程

卡拉先生
发布于 2020年09月14日 | 上次编辑:2020年09月16日

header

在使用 MySQL 时,我们不免经常碰到需要备份、数据迁移之类的情况。本文中,我们介绍如何用 MySQL 在命令行下进行数据库导入和导出,读完本篇之后,你应该可以熟练地导出数据、备份数据。使用这里介绍的命令,你不光可以导出数据库表,也可以导入和导出整个数据库。

开篇小贴士:要使用 MySQL 的导入和导出功能,你得登录到你的服务器上,而且最好是切换到 root 用户。

从 MySQL 中导出数据库

一般来说,最好用的 MySQL 导出工具是 mysqldump。通常在安装 MySQL 时我们也会安装好 mysqldump 这个工具。

要使用 mysqldump,你需要一个拥有 MySQL 数据库导出权限的用户的登录信息(用户名、密码等)。

有了这些登录信息,你就可以在在 mysqldump 的命令行中输入这行带参数的命令:

$ mysqldump -u my_username -p database_name > output_file_path

里面用到的参数分别是:

  • -u 参数表示后面会跟着 MySQL 用户名。
  • -p 参数表示输入命令后,会被要求输入对应用户名的密码。
  • database_name 是你想要导出的数据库的名字。
  • > 符号是 Unix 系统下的 STDOUT 指令,它能把 Unix 命令输出的文本输出的另一个位置去。那么在上面那条命令里,输出的地址是一个文件路径,也就是上面的 output_file_path

注意: 一般来说我们都推荐 output_file_path 参数里写上绝对路径和文件名,这样生成出来的文件才不会因为失误而跑到其他地方去。

接下来我们看一个案例。我们要以 book_admin 用户的身份,把 books 数据库导出到 ~/backup/database 文件夹里去,我们会输这样一行命令:

$ mysqldump -u book_admin -p books > ~/backup/database/books.sql
Enter password:

然后输入上面的命令要求的密码,然后这条命令就会生成一个以 .sql 为后缀的备份文件到我们指定的文件夹里(虽然你可以不写后缀,但我们推荐你写)。

通过 mysqldump 导出的备份文件,默认是不会保存数据库级别相关的命令的(例如创建数据库),相反它只保存表以及表数据的相关命令,来方便你做后续的导入。如果你还需要导出一个或多个数据库的能力,你可以去看一下官方文档里关于 --database 参数的描述。

如果不知道或者忘了你的 MySQL 用户名,可以参考MySQL查看所有用户

向 MySQL 中导入数据库

现在你已经学会如何导出一个 MySQL 数据库的备份文件了,我们再来聊聊如何反向操作,也就是导入一个数据库备份文件到一个现有的数据库里去。

可能你也猜到了,为了和 mysqldump 命令行的能力互补,还有一个叫 mysqlimport 的命令行工具用来做导入。

在大多数情况下,导入其实也不过就是把和你在导出时输的参数往 mysqlimport 命令里面去套就行了。 比如我们要把刚才导出的 book.sql 文件导进去,你会发现要输的命令以及参数和刚才基本雷同:

$ mysqlimport -u book_admin -p books_production ~/backup/database/books.sql
Enter password:

跟前面一样,-u-p 参数都是用来做登录校验的。后面跟着的是要导入的数据库的名字,也就是 books_production (在这个案例里,我们用的一个不同的、生产环境的数据库)。最后我们写清楚了含有所有数据的导入文件的绝对路径 ~/backup/database/books.sql。你还会发现,mysqlimport 不需要用到 <> (STDIN/STDOUT)这两个指令,因为这次我们是从文件导入到数据库里。(如果不熟悉数据库管理的话,可以参考安装数据库数据库改名的教程)

到这里,你已经学会了如何导出一个已有的数据库,并且学会了如何再将导出的文件导入到一个相同甚至不同的数据库里。之后你就可以熟练地应用这里学到的技巧,来进行数据迁移、备份等操作了。

总结

如果你在搭建完数据库后,需要构建搜索功能,可以尝试卡拉搜索,无需配置维护即可实现毫秒级搜索,后台可轻松控制排序算法让运营和产品可以轻松调整,降低开发负担。

这篇文章里我们介绍了如何用 mysqldumpmysqlimport 来导入和导出 MySQL 数据库。其它 MySQL 实用技巧和文章请参考:

MySQL中如何找到包含某些字段的所有表

如何在MySQL中创建新用户并授权权限]

友情链接更新日志© 2020, 卡拉搜索, Built with ❤️ in San Francisco + Beijing

京ICP备15049164号-3