JAVA实现数据库备份与还原
JAVA实现数据库备份与还原[MYSQL为例]
数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现,JAVA可以通过调用mysqldump、mysql客户端软件分别进行mysql数据库的备份还原,当然前提是JAVA服务器必须安装mysql客户端软件,但是也可以通过java telnet登陆数据库服务器实现备份,关于telnet的相关资料请Google.
MYSQL支持的备份方式:
1.使用SELECT INTO ...OUTFILE,例如
SQL代码
SELECT * INTO OUTFILE "D:\\test.sql" fields terminatedby ',' lines terminatedby '' from category ;
生成的文件会存放在数据库服务器上面
SELECT INTO只备份了数据库表中的数据:如下为category备份后的文件内容
XML/HTML代码
1,ELECTRONICS,\N
2,TELEVISIONS,1
3,TUBE,2
4,LCD,2
5,PLASMA,2
6,PORTABLE ELECTRONICS,1
7,MP3 PLAYERS,6
8,FLASH,7
9,CD PLAYERS,6
10,2 WAY RADIOS,6
2.使用BACKUP TABLE,例如
SQL代码
BACKUPTABLE test_tableto 'D:\backup';
BACKUP只针对MyISAM表格,且在MYSQL 5.1的参考手册中“注释:本语句不理想”; BACKUP语句效果为拷贝数据库表中的.frm文件到数据库服务器目标目录
3.使用mysqldump程序或mysqlhotcopy脚本
MYSQL 5.1的参考手册中关于mysqldump的说明:“可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。“
JAVA可以运用Process类的exec(String str)方法调用系统命令,所以需要在服务器上安装mysqldump程序已完成备份,可以对远程的数据库服务器进行备份(配置hostname参数),备份语句具体参数参考MYSQL参考手册
MYSQL备份命令行:
SQL代码
mysqldump -hhostname -uusername -ppassword databasename > ‘backupfile’
JAVA代码如下:
Java代码
public final String BACKUP_COMMAND ="mysqldump";
public final String ENCODING ="utf8";
public boolean backup(String file) {
boolean isSuccess =true;
try {
Runtime rt = Runtime.getRuntime();
String backupStr =this.getBackupStr();
T(backupStr);
Process process = rt.exec(backupStr);
BufferedReader br =new BufferedReader(new InputStreamReader(process.getInputStream(), ENCODING));
String inStr ="";
StringBuffer sb =new StringBuffer("");
while ((inStr = br.readLine()) !=null) {
sb.append(inStr).append("");
}
String outStr = sb.toString();
OutputStreamWriter writer
FileOutputStream(file), ENCODING);
writer.write(outStr);
writer.flush();
br.close(); writer.close(); }catch (Exception e) { =new OutputStreamWriter(new
e.printStackTrace();
isSuccess =false;
}
return isSuccess;
}
private String getBackupStr() {
String backupStr = BACKUP_COMMAND +" -u" + db.getUserName() +" -p" + db.getPassword() +" -h" + db.getHost() +" --set-charset=" + db.getEncoding() +"
" + db.getName();
return backupStr;
}
MYSQL还原命令行:
SQL代码
mysql -hhostname -uusername -ppassword databasename < ‘backupfile’ JAVA代码如下:
Java代码
public final String REVERT_COMMAND ="mysql";
public boolean revert(String file) {
try {
Runtime rt = Runtime.getRuntime();
String revertStr =this.getRevertStr();
Process process = rt.exec(revertStr);
String inStr;
StringBuffer sb =new StringBuffer("");
BufferedReader br =new BufferedReader(new InputStreamReader( new FileInputStream(file), ENCODING));
while ((inStr = br.readLine()) !=null) {
sb.append(inStr).append("");
}
String outStr = sb.toString();
OutputStreamWriter writer
OutputStreamWriter(process.getOutputStream(), ENCODING);
writer.write(outStr);
writer.flush();
br.close();
writer.close();
}catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
private String getRevertStr() {
String backupStr = REVERT_COMMAND +" -u" + db.getUserName() +" -p" + db.getPassword() +" -h" + db.getHost() +" " + db.getName(); =new
return backupStr;
}
mysqlhotcopy程序,MYSQL 5.1的参考手册的说明:"如果你在服务器上进行备份,并且表均为MyISAM表,它运行在Unix和NetWare中"
实现原理和mysqldump一样,这里暂不详细说明
附上mysqldump备份后的文件的内容:DROP TAB
XML/HTML代码
CREATE TABLE `category` (
`category_id` int(11) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`parent` int(11) default NULL,
PRIMARY KEY (`category_id`)
)ENGINE=MyISAM DEFAULTCHARSET=latin1 ROW_FORMAT=REDUNDANT;
--
-- Dumping data for table `category`
--
/*!40000 ALTER TABLE `category` DISABLE KEYS */;
LOCK TABLES `category` WRITE;
INSERT INTO `category` VALUES (1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),(4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),(7,'MP3 PLAYERS',6),(8,'FLASH',7),(9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);
UNLOCK TABLES;
/*!40000 ALTER TABLE `category` ENABLE KEYS */;
…… 此处隐藏:3611字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




