现在的位置: 首页 > 综合 > 正文

使用asp.net进行Mysql数据库备份程序的知识准备

2013年05月14日 ⁄ 综合 ⁄ 共 2451字 ⁄ 字号 评论关闭

最近想在自己的程序中加上数据库的备份和恢复功能,但是没有现成的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

抱歉!评论已关闭.