第二种方式:
数据备份:
public class DBBackup {
public static void backup(String DBName,String file){
String user = "root"; // 数据库帐号
String password = "123456"; // 登陆密码
String database = DBName; // 需要备份的数据库名
String filepath = file; // 备份的路径地址
//mysql命令的路径
String mysqlPath="C:/Program Files/MySQL/MySQL Server 5.1/bin/";
try{
Runtime rt = Runtime.getRuntime();
Process child = rt.exec(mysqlPath+"mysqldump -u"+user+" -p"+password+" "+database);
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
InputStreamReader isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
BufferedReader br = new BufferedReader(isr);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();//备份出来的内容是一个字条串
FileOutputStream fout = new FileOutputStream(filepath);
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);//写文件
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
in.close();
isr.close();
br.close();
writer.close();
fout.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
数据还原:
public class DBUpload {
private static String databases;
static{
QueryBuilder qb=new QueryBuilder("show databases;");
DataTable dt=qb.executeDataTable();
StringBuffer court=new StringBuffer("");
if(dt.getRowCount()>0){
for(int i=0;i<dt.getRowCount();i++){
if(i==0){
court.append(dt.getString(i,"Database"));
}else{
court.append(","+dt.getString(i,"Database"));
}
}
databases=court.toString().trim();
}else{
databases="";
}
}
//判断数据库是否已经存在
public static boolean isExist(String DBName){
if(StringUtil.isEmpty(databases)){
return false;
}else{
String dbs[]=databases.split(",");
for(int i=0;i<dbs.length;i++){
if(DBName.equalsIgnoreCase(dbs[i])){
return true;
}else{
continue;
}
}
return false;
}
}
public static boolean load(String DBName,String file){
String user = "root"; // 数据库帐号
String password = "mysql"; // 登陆密码
String database = DBName; // 需要备份的数据库名
String filepath=file;
String str1="mysqladmin -u "+user+" -p"+password+" create "+database;
String str2="mysql -u "+user+" -p"+password+" "+database;
try{
if(!isExist(DBName)){//不存在此数据库
Process p=Runtime.getRuntime().exec(str1);
p.waitFor();
}
Process child=Runtime.getRuntime().exec(str2);
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br=new BufferedReader(new InputStreamReader( new FileInputStream(filepath), "utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();
System.out.println("数据导入成功!");
}
catch(Exception e){
e.printStackTrace();
}
return false;
}
}
此方式可以接受命令的路径命中包含空格!!
如果程序出现如后错误:java.io.IOException: 管道已结束
或
java.io.IOException: 管道正在被关闭
可能是你的链接数据库的密码设置错误
分享到:
相关推荐
上述代码展示了如何使用Java来实现MySQL数据库的备份和还原操作。以下是对这些操作的详细解释: 首先,代码导入了多个Java库,包括`java.io`包下的类,用于处理输入/输出流,以及`java.util`包下的类,如`Date`和`...
本知识点将深入探讨如何在SpringBoot环境下对MySQL数据库进行备份与恢复,以确保数据的安全。 首先,`MysqlBackup.java` 文件很可能是实现备份和恢复功能的核心Java类。在SpringBoot中,我们可以利用JDBC(Java ...
MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...
通过上述介绍可以看出,使用Java调用`mysqldump`和`mysql`工具进行MySQL数据库的备份与恢复是一种简单有效的方法。不仅可以提高数据安全性,还能够通过编写脚本来实现自动化的数据备份与恢复流程,极大地提高了工作...
【Java实现SQL Server及MySQL备份与还原】 在Java开发中,有时我们需要对数据库进行备份和还原操作,以确保数据的安全性和可恢复性。本篇将详细介绍如何使用Java来实现SQL Server和MySQL这两种常见数据库的备份与...
在Java中,可以使用`Runtime.getRuntime().exec()`方法调用操作系统命令(如mysqldump for MySQL)来完成物理备份。 - **逻辑备份**:通过执行SQL语句导出数据,例如`SELECT INTO OUTFILE`或`mysqldump --no-create...
### Java JSP 实现 MySQL 数据库备份与还原 #### 知识点概述 本文将详细介绍如何使用 Java Bean 技术配合 JSP 来实现 MySQL 数据库的备份与还原功能。在实际开发过程中,数据库的备份与恢复是非常重要的环节,它...
在`DemoController.java`中,可能包含了一个处理数据库备份请求的控制器,它调用了相关的备份服务或工具。而`java实现数据库备份说明.txt`文件可能详细阐述了实现备份的具体步骤和技术细节,包括代码示例、配置说明...
- 同样地,使用Java调用MySQL客户端命令(如`mysql`命令)来进行数据还原。 - 示例Java代码片段如下: ```java public boolean restore(String file) { boolean isSuccess = true; try { Runtime rt = ...
6. **压缩包子文件的文件名称列表**:“数据库备份还原”可能包含数据库备份的压缩文件,如`.zip`或`.gz`格式,这些文件可能包含多个数据库备份文件,如全备文件、日志文件或其他格式的备份。 在实际操作中,开发者...
总之,使用Java实现MySQL数据库的备份与还原,可以通过调用系统命令结合`mysqldump`和`mysql`工具,同时处理好输入输出流,确保数据的安全传输和存储。在实际操作中,还需要关注性能、安全性以及不同场景下的优化...
本主题将详细探讨如何使用Java来实现MySQL数据库的备份和还原功能。 首先,让我们了解为什么需要进行数据库备份。数据库备份的主要目的是防止数据丢失,这可能由于硬件故障、软件错误、恶意攻击或意外删除等原因...
MySQL数据库备份通常涉及以下几种方法: 1. **完整数据库备份**:使用`mysqldump`工具进行全量备份,命令如下: ```bash mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql ``` 这个...
本文将深入探讨如何使用Java编程语言来实现对SQL Server和MySQL数据库的备份与还原功能。 首先,我们需要一个数据库连接基类,如`DataBaseUtil`,它负责建立和关闭与数据库的连接。在这个例子中,作者使用了Struts1...
本文将深入探讨“数据库备份还原”的概念、重要性、常见方法以及源代码实现。 首先,数据库备份是保护数据免受意外丢失或损坏的关键步骤。这可能包括硬件故障、软件错误、人为误操作、病毒攻击或者自然灾害等不可...
首先,备份MySQL数据库通常涉及到SQL的`mysqldump`命令,但在Java环境中,我们可以通过调用操作系统命令或者使用相关的Java库来实现。这里主要介绍使用Java的Runtime类或ProcessBuilder类来调用外部`mysqldump`工具...
通过以上步骤,我们成功地实现了使用Java对MySQL数据库进行备份与恢复的功能。这种方法不仅简单高效,而且可以根据实际需求灵活调整。这对于维护数据库的完整性以及保证数据安全至关重要。在实际应用中,还可以考虑...
另一方面,"BackUpAndRestore"可能是实际的源代码文件,可能包含了实现备份和恢复功能的程序代码,例如使用编程语言(如Java、Python、C#)与数据库进行交互,执行备份和恢复操作的API调用等。 学习和实践这些内容...