跳转至

6. 数据备份与恢复

数据导入

作用: 把文件系统中的内容导入到数据库中

语法

load data infile '文件名'
into table 表名
fields terminated by '分隔符'
lines terminated by '\n';

load data infile '/var/lib/mysql-files/scoreTable.csv'
into table score
fields terminated by ','
lines terminated by '\n';

步骤

1. 在数据库中创建对应的表
    create table student(
    id int primary key auto_increment,
    name varchar(20) not null,
    score float(4, 1),
    class varchar(10));

2. 执行数据导入
    1. 查看搜索路径
        show variables like 'secure_file_priv'
        ## /var/lib/mysql-files
    2. 拷贝文件
        sudo cp ~/scoretable.csv /var/lib/mysql-files

数据导出

  1. 把数据库表的记录导出到系统文件里

  2. 语法格式

    select ..from 表名
    into outfile "文件名"
    fileds terminated by '分隔符'
    lines terminated by '\n'
    

练习

把MOSHOU库下的sanguo表中, 英雄的姓名/攻击值和国家导出, sanguo.csv

1. 查看搜索路径
    show variables like '%secure%';
2. 执行导出语句
    select name, gongji, country from MOSHOU.sanguo
    into outfile '/var/lib/mysql-files/sanguo.csv'
    fields terminated by ','
    lines terminated by '\n';

把mysql 库下的 user 表中的user  host 的值导出到系统文件user.txt
   select user,host from user
   into outfile '/var/lib/mysql-files/user.txt'
   fields terminated by ','
   lines terminated by '\n';

表的复制

语法

create table 表名 select ... from 表名 where 条件;
示例

1. 复制MOSHOU.sanguo表, sanguo2s
    create table MOSHOU.sanguo2 select * from MOSHOU.sanguo;

2. 复制MOSHOU.sanguo 中的id,name,country 的记录,sanguo3
    create table MOSHOU.sanguo3 select id,name,country from MOSHOU.sanguo;


3. 复制MOSHUO.sanguo中的name, counrty, 每页显示2条记录名, 复制第3页的内容
    create table MOSHOU.sanguo4 select name,country from MOSHOU.sanguo limit 4,2;

复制表结构

create table 表名 select * from 表名 where false;

数据备份

mysqldump(在linux终端操作)

完整备份

命令格式

mysqldump -u用户名 -p密码 源库名 > ***.sql

源库名的表示方式

--all-databases    备份所有库
库名                备份1个库
-B 库1 库2 库3      备份多个库
库名 表1 表2 表3     备份多张表

练习

1. 备份所有库,放到mydata目录下: AllDATA.sql
  mysqldump -uroot -p --all-databases > ALLDATA.sql

2. 备份MOSHOU下sheng city xian 三张表
  mysqldump -uroot -p MOSHOU sheng city xian > mscx.sql

3. 备份MOSHOU和EXERCISE两个库 md.sql
  mysqldump -uroot -p -B MOSHOU EXERCISE > md.sql

增量备份

数据恢复

  1. 命令格式(linux 终端)
    mysql -u用户名 -p 目标库名 < ***.sql
    
  2. 从所有库中恢复某一个库
    mysql -u用户名 -p --one-database 库名 < ***.sql
    

注意
1. 恢复库时,如果恢复到原库将会将表中的数据覆盖,新增表 不会删除
2. 恢复库时, 如果库不存在,则必须先创建空库