刚开始自己一直尝试用DataGrip、Navicat的sql/csv格式导入导出,总有错误或者遗漏,比如报错中止、50张表却只导入32张等,可能是操作方式有误或者数据格式有问题。也试过用sql语句,但仍失败。经查阅资料、尝试多次,终于成功,记录如下。
首先使用mysqldump命令来备份源数据库。mysqldump是MySQL自带的命令行工具,可通过在cmd(windows)或 Linux终端(Linux)中执行如下命令来备份整个数据库:
mysqldump -u-p > backup.sql
其中,是数据库的用户名,
//导出完整数据库结构和数据 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 //导出数据库结构 mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名 //导出一个表,包括表结构和数据 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 //导出一个表结构 mysqldump -u 用户名 -p -d数据库名 表名> 导出的文件名
注:建议使用mysqldump备份数据库,能完整保留源数据库的结构和数据。DataGrip、Navicat的导入导出,由于两个数据库之间可能存在差异,数据结构、格式会发生改变,导致复制失败。
需要在目标数据库中创建对应的数据库,可以使用MySQL的命令行工具登录到目标数据库,执行以下命令来创建数据库:
create database;
其中,
有了源数据库的备份文件和目标数据库,可以使用MySQL的命令行工具将备份的sql语句导入到目标数据库。进入backup.sql所在目录(如果是从服务器导入到本机 可将服务器上生成的backup.sql文件下载到本地),在目标数据库的终端执行以下命令:
mysql -u-p < backup.sql
其中,是目标数据库的用户名,
执行完该命令后,目标数据库将包含与源数据库完全相同的所有表结构和数据。
[root@localhost ~]# mysqldump -help Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help
登录选项
1.登录选项: -u user:指定用户 -h host:指定主机 -p:表示要使用密码 -E, --events: 备份事件调度器 -R, --routines: 备份存储过程和存储函数 2.备份选项: --all-databases:备份所有数据库 --databases db1 db2:备份指定的数据库 --single-transaction:对事务引擎执行热备 --flush-logs:更新二进制日志文件 --master-data=2 1:每备份一个库就生成一个新的二进制文件(默认) 2:只生成一个新的二进制文件 --quick:在备份大表时指定该选项
//导出命令 #导出包括系统数据库在内的所有数据库(all.sql默认保存在bin文件夹下面) mysqldump -u username -p --all-databases > filename.sql #导出指定数据库表结构和数据 mysqldump -u username -p dbname [tbname...] > filename.sql #导出多个数据库: mysqldump -u username -p --databases db1 db2 ...> filename.sql #导出多张表: mysqldump -u username -p --databases db1 --tables t1 t2> filename.sql #只导出表结构不导表数据,添加“-d”命令参数 mysqldump -u username -p -d dbname [tbname...] > filename.sql #只导出表数据不导表结构,添加“-t”命令参数 mysqldump -u username -p -t dbname [tbname...] > d:/user.sql #只导出db1数据库的表结构 导出:mysqldump -u root -p --no-data --databases db1 > backup.sql 导入:mysql -u root -p db1 < backup.sql #系统行导入命令 mysql -u username -p dbname < d:XX.sql(路径) mysql -u root -p db_name < d:/backup.sql #source导入 mysql> use db_name; mysql> source /backup/mysqldump/backup.sql(路径)
参数说明:
username:表示用户名称;
dbname:表示需要备份的数据库名称;
tbname:表示数据库中需要备份的数据表,可以指定多个数据表。省略该参数时,会备份整个数据库;
右箭头“>”:用来告诉 mysqldump 将备份数据表的定义和数据写入备份文件;
filename.sql:表示备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个后缀名为.sql的文件。
注意:mysqldump 命令必须在 cmd 窗口下执行,不能登录到 MySQL 服务中执行。
输入密码后,Mysql就会进行备份了。
上一篇:【MySQL】如何实现单表查询?