mysql –u root –p [dbname] < backup.sql
# 如果备份文件中包含了创建数据库的语句,则恢复的时候不需要指定数据库名称
mysql -uroot -p < atguigu.sql
# 否则需要指定数据库名称
mysql -uroot -p atguigu4< atguigu.sql
mysql –u root –p < all.sql
mysql -uroot -pxxxxxx < all.sql
# 恢复atguigu数据库
sed -n '/^-- Current Database: `atguigu`/,/^-- Current Database: `/p' all_database.sql > atguigu.sql
# 导出单表的结构
cat atguigu.sql | sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `class`/!d;q' > class_structure.sql
# 导出单表的数据
cat atguigu.sql | grep --ignore-case 'insert into `class`' > class_data.sql
# 用shell语法分离出创建表的语句及插入数据的语句后 再依次导出即可完成恢复
use atguigu;
# 恢复结构
source class_structure.sql;
# 恢复数据
source class_data.sql;
# 直接将MySQL中的数据库文件复制出来
# 在Linux平台下,数据库目录位置通常为/var/lib/mysql/
# 对InnoDB存储引擎的表不适用。对于MyISAM存储引擎的表,这样备份和还原很方便,但是还原时最好是相同版本的MySQL数据库,否则可能会存在文件类型不同的情况
# 现在有1个MyISAM存储引擎的库,对它进行物理备份
# 锁定表
FLUSH TABLES WITH READ LOCK
# 将mysql目录下的数据库文件复制到其他目录用于备份
# 结算其他客户对表的修改行为
UNLOCK TABLES
# 删除原来表,用于模拟数据损毁
# 将备份的文件复制到mysql目录,覆盖原文件,重启mysql服务器
# 赋予用户查看该文件的权限
chown -R mysql.mysql /var/lib/mysql/dbname
# 查看数据库是否恢复成功
- 使用SELECT…INTO OUTFILE导出文本文件
# 查看导出目录
SHOW GLOBAL VARIABLES LIKE '%secure%';
# 导出account表
SELECT * FROM account INTO OUTFILE "/var/lib/mysql-files/account.txt";
# 使用mysqldump命令将将atguigu数据库中account表中的记录导出到文本文件
mysqldump -uroot -p -T "/var/lib/mysql-files/" atguigu account
# mysqldump命令执行完毕后,在指定的目录/var/lib/mysql-files/下生成了account.sql和account.txt文件
# 使用mysqldump将atguigu数据库中的account表导出到文本文件,使用FIELDS选项,要求字段之间使用逗号“,”间隔,所有字符类型字段值用双引号括起来
mysqldump -uroot -p -T "/var/lib/mysql-files/" atguigu account --fields-terminatedby=',' --fields-optionally-enclosed-by='\"'
# 使用mysql语句导出atguigu数据中account表中的记录到文本文件
mysql -uroot -p --execute="SELECT * FROM account;" atguigu> "/var/lib/mysqlfiles/account.txt"
# 将atguigu数据库account表中的记录导出到文本文件,使用--veritcal参数将该条件记录分为多行显示
mysql -uroot -p --vertical --execute="SELECT * FROM account;" atguigu > "/var/lib/mysql-files/account_1.txt"
# 将atguigu数据库account表中的记录导出到xml文件,使用--xml参数
mysql -uroot -p --xml --execute="SELECT * FROM account;" atguigu>"/var/lib/mysqlfiles/account_3.xml"
- 使用LOAD DATA INFILE方式导入文本文件
# 使用SELECT...INTO OUTFILE将atguigu数据库中account表的记录导出到文本文件
SELECT * FROM atguigu.account INTO OUTFILE '/var/lib/mysql-files/account_0.txt';
# 从文本文件account.txt中恢复数据
LOAD DATA INFILE '/var/lib/mysql-files/account_0.txt' INTO TABLE atguigu.account;
# 选择数据库atguigu,使用SELECT…INTO OUTFILE将atguigu数据库account表中的记录导出到文本文件,使用FIELDS选项和LINES选项,要求字段之间使用逗号","间隔,所有字段值用双引号括起来
SELECT * FROM atguigu.account INTO OUTFILE '/var/lib/mysql-files/account_1.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '\"';
# 从/var/lib/mysql-files/account.txt中导入数据到account表中
LOAD DATA INFILE '/var/lib/mysql-files/account_1.txt' INTO TABLE atguigu.account FIELDS TERMINATED BY ',' ENCLOSED BY '\"';
# 导出文件account.txt,字段之间使用逗号","间隔,字段值用双引号括起来
SELECT * FROM atguigu.account INTO OUTFILE '/var/lib/mysql-files/account.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '\"';
# 使用mysqlimport命令将account.txt文件内容导入到数据库atguigu的account表中
mysqlimport -uroot -p atguigu '/var/lib/mysql-files/account.txt' --fields-terminatedby=',' --fields-optionally-enclosed-by='\