最近想在自己的程序中加上数据库的备份和恢复功能,但是没有现成的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、导入数据库记录
注:
1、参考:Discuz中Mysql分卷备份源码注解
2、网上有个asp.net+mysql数据库管理源代码,已经上传到资源,http://download.csdn.net/source/3302493