本文是关于如何将MySQL数据库中某数据库的数据表结构以及表数据导出为
.sql
文件,以及如何执行.sql
文件。适用于需要简单数据库迁移的读者。
导出数据表
MySQL导出表结构主要是使用mysqldump
命令。该命令是在cmd
下执行的,而非MySQL命令行中,使用相对路径,会将文件保存在当前目录下。
导出数据库
dbname
中全部表结构至db.sql
中:1
mysqldump -uroot -p -d dbname >db.sql
导出数据库
dbname
中某张表tablename
结构至db.sql
中:1
mysqldump -uroot -p -d dbname tablename >db.sql
导出数据库
dbname
中全部表结构及其数据至db.sql
中(不加-d):1
mysqldump -uroot -p dbname >db.sql
导出数据库
dbname
中某张表tablename
结构及其数据至db.sql
中:1
mysqldump -uroot -p dbname tablename >db.sql
导入数据表
当我们拥有一个sql文件的时候,我们就可以直接执行sql脚本来完成任务。
在cmd下执行命令:需要选择MySQL的sever下的目录,如果目录存在空格,则需要使用双引号,若sql文件中存在
use 数据库
则不需要指定-D数据库
1
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" –uroot –p -D dbname < C:\Users\username\Desktop\db.sql
在MySQL命令行中执行命令:sql文件需要是绝对路径
1
2
3source C:\Users\username\Desktop\db.sql
-- 或者推荐下面这个
\. C:\Users\username\Desktop\db.sql
在导入数据库的时候,有可能会出现错误MySQL server has gone away
。原因一般是操作sql的时间太长,或者插入数据库的数据量太大,一般来说,可以将数据分批插入,或者修改max_allowed_packet
参数的配置。
首先查看max_allowed_packet的值,使用show global variables like 'max_allowed_packet'
查看对应的值,之后输入语句进行调整,由于db.sql
文件太大,本人这里设置为100M:
1 | set global max_allowed_packet=1024*1024*100 |
接下来再读取sql文件导入数据库的时候问题就不大了