Mysql教程

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>
...省略部分内容

关注微信获取最新动态