最近想在自己的程序中加上数据库的备份和恢复功能,但是没有现成的asp.net可以参考,就找了Mysql的帮助文件,挑出需要的几个必须的命令,总结如下:
一、Mysq导出Sql格式范例
/*
Navicat MySQL Data Transfer
Source Server : mysql
Source Server Version : 50508
Source Host : localhost:3306
Source Database : schoolnet
Target Server Type : MYSQL
Target Server Version : 50508
File Encoding : 65001
Date: 2011-04-22 15:14:00
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `bk_attach`
-- ----------------------------
DROP TABLE IF EXISTS `bk_attach`;
-- ----------------------------
-- Table structure for `b_course`
-- ----------------------------
DROP TABLE IF EXISTS `b_course`;
CREATE TABLE `b_course` (
`CourseId` int(11) NOT NULL AUTO_INCREMENT,
`CourseName` varchar(8) DEFAULT NULL,
PRIMARY KEY (`CourseId`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=gb2312;
-- ----------------------------
-- Records of b_course
-- ----------------------------
INSERT INTO b_course VALUES ('1', '语文');
INSERT INTO b_course VALUES ('2', '数学');
INSERT INTO b_course VALUES ('3', '英语');
INSERT INTO b_course VALUES ('4', '物理');
INSERT INTO b_course VALUES ('5', '化学');
INSERT INTO b_course VALUES ('6', '生物');
INSERT INTO b_course VALUES ('7', '政治');
INSERT INTO b_course VALUES ('8', '历史');
INSERT INTO b_course VALUES ('9', '地理');
INSERT INTO b_course VALUES ('10', '音乐');
INSERT INTO b_course VALUES ('11', '体育');
INSERT INTO b_course VALUES ('12', '美术');
二、获取数据库的sql
命令:SHOW CREATE DATABASE schoolnet
生成数据表:
Database
Create Database
schoolnet
CREATE DATABASE `schoolnet` /*!40100 DEFAULT CHARACTER SET gb2312 */
三、获取数据列表
命令:SHOW CREATE DATABASE
四、获取数据库中的数据表和视图名
命令:show TABLE STATUS 可以区分表还是视图区别在于Comment字段是否包含字符“view”
显示表列表:show TABLE STATUS where COMMENT not like '%View%'
Name
…..
Comment
a
b
view
注:因为视图大都需要数据表为基础,所以备份时也需要注意先备份数据表后备份视图,否则在恢复数据的时候会产生错误
另外在获取的“creat table**”的语句中可能包含回车换行符,在备份和恢复的时候必须单独处理,一般在备份的时候就进行Replace(tmp_insert, Chr(13) & Chr(10), "\r\n")的替换
记录中可能包含回车换行符,此时问了语句的合法性,必须先进行替换(同上),在数据恢复的时候必须对这些数据进行还原,就是再把Replace(tmp_insert,"\r\n", Chr(13) & Chr(10))
附加:show TABLES
获取到数据库中所有表的名称
Tables_in_dbname
b_course
…….
五、 获取数据表的sql:
命令:SHOW CREATE TABLE b_course
生成如下表:
Table
Create Table
B_course
CREATE TABLE `b_course` (
`CourseId` int(11) NOT NULL AUTO_INCREMENT,
`CourseName` varchar(8) DEFAULT NULL,
PRIMARY KEY (`CourseId`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=gb2312
六、获取实际表的记录
根据获取的数据表,便利所有记录,生成插入语句,没验证这样的效率如何,可以考虑分卷
INSERT INTO bk_function VALUES ('1', '备课栏目管理', 'Admin', 'admin/ad_task.aspx');
在获取记录数据的时候还需要注意,字段值为“null”和逻辑字段 (转换为0和1) 的处理
七、恢复的思路
1、连接数据库测试,不成功报错
2、检查指定数据库是否存在,存在提示删除覆盖,不存在创建
3、导入数据库结构
4、导入数据库记录
注: