MySQL数据库备份之逻辑的导出与导入

一、逻辑的导出

导出本身时一种辅助数据备份的方法,使用与各种引擎,例如常见的innodb、myisam···
导出是对数据进行备份,对表中的一列或者多列进行备份,备份的仅仅是数据记录,不能备份表的结构或者新建数据库等等。

案例:存在一张表db.itheima.tb_student,现将表中数据导出到指定目录/tmp/sqlbak/

mysql>select * into outfile '/tmp/sqlbak/tb.student.txt' from db.itheima.tb_student;

导出时需注意:

  • 对my.cnf配置逻辑导出的路径
vi my.cnf
[mysqld]
....
secure_file_priv=/tmp/sqlbak
  • mysql账号对/tmp/sqlbak目录有写的权限
setfacl -m u:mysql:rwx /tmp/sqlbak

二、逻辑的导入

同样通过案例来说明
案例:恢复tb_student的数据,也就是数据的导入

mysql>load data local infile '/tmp/sqlbak/tb_student.txt' into table tb_student;

也可以使用另一种非交互式的方法

mysqlimport db_itheima /tmp/sqlbak/tb_student.txt -p

tips:
导出只能备份数据,因此表结构改变,是不能够恢复的;
作为一种辅助恢复手段,比较常见于测试环境造数据的场景;
当然,还有另一种经典场景:
可以把一些规则的文本文件导入到数据库中
案例:将/etc/passwd文件导入到数据库’password’这张表中
第一步,需要在数据库中建立’password’这张表

mysql>use db_itheima
mysql>create table `password`(
		  `uname` varchar(50) default null,
		  `pass` varchar(5) default null,
		  `uid` int(10) default null,
		  `gid` int(10) default null,
		  `comment` varchar(255) default null,
		  `home` varchar(50) default null,
		  `shell` varchar(50) default null)
		  engine=innodb default charset=utf8mb4;

第二步,将/etc/passwd文件拷贝到/tmp/sqlbak目录下,名字需要与数据库中的表名相同

cp /etc/passwd /tmp/sqlbak/password.txt

第三步,将文件导入

mysqlimport db_itheima --fields-terminated-by=':' --lines-terminated-by='\n' /tmp/sqlbak/password.txt -p

--fields-terminated-by : 指定导出文件的分隔符
--lines-terminated-by : 指定每一行的结尾使用的符号;\n表示换行符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值