教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

JAVA实现数据库备份与还原

来源:网络收集 时间:2026-04-12
导读: JAVA实现数据库备份与还原[MYSQL为例] 数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现,JAVA可以通过调用mysqldump、mysql客户端软件分别进行mysql数据库的备份还原,当然前提是JAVA服务器必须安装mysql客户端软件,但是也可以通过java telnet

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
JAVA实现数据库备份与还原.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/269209.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)