16.5 本章实例
本节将对test数据库中score表进行备份和还原操作。score表的结构和记录见10.9节。本节要求的操作如下:
(1)使用mysqldump命令来备份score表。备份文件存储在D:\backup路径下。
(2)使用mysql命令来还原score表。
(3)使用SELECT...INTO OUTFILE来导出score表中的记录。记录存储到 D:Aackup\score.txt中。
(4)使用mysqldump命令,将score表的记录导出到XML文件中。这个XML文件存储在 D:\backup中。
本实例的执行步骤如下:
1. 备份score表
使用mysqldump命令来备份score表。代码如下:
mysqldump -u root -p test score > D:\backup\score.sql
执行完后,可以在D:\backup目录下看到score.sql文件。score.sql文件的部分内容如下:
-MySQL dump 10.13 Distrib 5.1.40, for Win32 (ia32) -- Host: localhost Database: test ~ Server version 5.1.40K)ommunity /*140101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*略去部分内容*/; DROP TABLE IF EXISTS 'score'; /*!40101 SET @saved_cs_client = @@character_set_dient */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE 'score' ( 'id' int(10) NOT NULL AUTOJNCREMENT, stuJd、int(10) NOT NULL, 'c_name' varchar(20) DEFAULT NULL, 'grade' int(10) DEFAULT NULL, PRIMARY KEY ('id'), UNIQUE KEY 'id' ('id') )ENGINE=MylSAM AUTOJNCREMENT=11 DEFAULT CHARSET=latin1; LOCK TABLES 'score' WRiTE; /*!40000 ALTER TABLE 'score' DISABLE KEYS */; INSERT INTO 'score' VALUES (1,901, '计算机’,98),(2,901, ’英语’,80),(3,902, '计算机’,65),(4,902, '中文',88),(5,903,'中文',95)(6,904, ’计算机’,70),(7,904,'英语',92),(8,905,'英语',94),(9,906,'计算机',90},(10,906,'英语',85); /*I40000 ALTER TABLE 'score' ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*略去部分内容*/ 一 Dump completed on 2009-11-20 20:53:57
从上面可知,score.sql文件中保持了主机名、数据库名、CREATE语句、INSERT语句和备份时间等信息。
2.还原score表
使用mysql命令来还原score表。代码如下:
mysql -u root -p test < D:\backup\score.sql
在执行该语句之前,先将score表中的记录都删除。登录MySQL数据库之后,执行DELETE语句和SELECT语句。执行结果如下:
mysql> USE test; Database changed mysql> DELETE FROM score; Query OK, 10 rows affected (0.06 sec) mysql> SELECT * FROM score; Empty set (0.09 sec) mysql> EXIT Bye
执行DELETE语句后,score代表中没有任何数据。使用EXIT退出mYsql数据库。然后,执行上面的MySQL语句来还原score表。执行结果如下:
C:\>mysql -u root -p test < D:\backup\score.sql Enter password: **** 代码执行完后,使用3£[£€丁语句来查询500比表中的数据。查询结果如下: C:\>mysql -u root -p -e "SELECT * FROM score" test Enter password: **** +-----+----------+----------+---------+ | id | stu_id | c_name | grade | +-----+----------+----------+---------+ | 1 | 901 | 计算机 | 98 | | 2 | 901 | 英语 | 80 | | 3 | 902 | 计算机 | 65 | | 4 | 902 | 中文 | 88 | | 5 | 903 | 中文 | 95 | | 6 | 904 | 计算机 | 70 | | 7 | 904 | 英语 | 92 | | 8 | 905 | 英语 | 94 | | 9 | 906 | 计算机 | 90 | | 10 | 906 | 英语 | 85 | +-----+----------+----------+---------+
结果显示,记录已经还原到score代表中。上面的mysql命令中,-e选项后面可以直接跟SELECT语句。SELECT语句后面加上查询的表所在的数据库。
3. 将score表中的内容导出到score.txt件中
使用root用户登录到MySQL服务器后,可以使用SELECl INTO OUTFILE来导出文本文件。命令如下:
SELECT * FROM test.score INTO OUTFILE 'D:/backup/score.txf FIELDS TERMINATED BY '\', OPTIONALLY ENCLOSED BY '\' LINES TERMINATED BY '\r\n' ;
代码中指定,每个字段之间用逗号隔开。每个字符型的数据用双引号括起来。而且, 每条记录占一行。登录到¥780[数据库中,执行上述SELECT语句。执行结果如下:
mysql>SELECT * FROM test.score INTO OUTFILE 'D:/backup/score.txt' ->FIELDS TERMINATED BY '\' OPTIONALLY ENCLOSED BY 't"' LINES TERMINATED BY '\r\n'; Query OK, 10 rows affected (0.02 sec)
执行完后,在D:\backup目录下存储score.txt文件。score.txt文件的内容如下:
1,901,"计算机",98 2,901,"英语",80 3,902,"计算机",65 4,902,"中文",88 5,903,"中文",95 6,904,"计算机",70 7,904,"英语",92 8,905,"英语",94 9,906,"计算机",90 9,906,"英语",85
4. 导出XML文件
使用mysqldump命令可以导出XML文件,代码如下: mysqldump -u root -p -xml test score > D:/backup/score.xml;
使用-xml选项可以导出XML文件。代码执行完后,可以在D:Aackup目录下找到 score.xmI文件。score.xml文件的部分内容如下:
<?xml version="1.0"?> <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> <database name="test"> <table_structure name="score"> <field Field="id" Type="int(10)" Null="NO" Key="PRI" Extra="auto_increment"/> ...省略部分内容 </table_structure> <row> <field name="id">1</field> <field name="stu_id">901</field> <field name="c_name">计算机</field> <field name="grade">98</field> </row> ...省略部分内容