600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > javaweb实现mysql备份功能_java web 实现mysql 数据库备份 恢复

javaweb实现mysql备份功能_java web 实现mysql 数据库备份 恢复

时间:2022-09-15 20:23:36

相关推荐

javaweb实现mysql备份功能_java web 实现mysql 数据库备份 恢复

如题,由于项目需要,研究并实现了java web的 mysql数据库的备份、下载、恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来:

背景介绍:

window 7系统

mysql 5.7

eclipse

spring mvc

tomcat 7

jdk 1.7

先上代码:

使用mysql的mysqldump 命令进行备份。

/**

* Java代码实现MySQL数据库备份

*

* @author lgc

* @param hostIP

* MySQL数据库所在服务器地址IP

* @param userName

* 进入数据库所需要的用户名

* @param password

* 进入数据库所需要的密码

* @param savePath

* 数据库导出文件保存路径

* @param fileName

* 数据库导出文件文件名

* @param databaseName

* 要导出的数据库名

* @return 返回true表示导出成功,否则返回false。

*/

public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath,

String fileName, String databaseName) throws InterruptedException {

boolean fa = false;

File saveFile = new File(savePath);

if (!saveFile.exists()) {// 如果目录不存在

saveFile.mkdirs();// 创建文件夹

}

if (!savePath.endsWith(File.separator)) {

savePath = savePath + File.separator;

}

PrintWriter printWriter = null;

try {

printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));

String backup = "mysqldump -h" + hostIP + " -u" + userName + " -p" + password + " " + databaseName

+ " --set-charset=UTF8 ";

String path = "E:\\";//这里是你复制的mysqldump.exe所在的文件目录下

String commad = "cmd /c " + path + backup + ">" + savePath + fileName;

System.out.println(commad);

Runtime.getRuntime().exec(commad);

fa = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (printWriter != null) {

printWriter.close();

}

}

return fa;

}

恢复备份:

// 数据库恢复

public static void load(String filename) {

try {

String path = "E:\\";

String commad = "cmd /c " + path+"mysql -u root -pcisoft jeecms ";

Runtime rt = Runtime.getRuntime();

// 调用 mysql 的 cmd:

Process child = rt.exec(commad);

OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流

String inStr;

StringBuffer sb = new StringBuffer("");

String outStr;

BufferedReader br = new BufferedReader(new InputStreamReader(

new FileInputStream(filename), "utf8"));

while ((inStr = br.readLine()) != null) {

sb.append(inStr + "\r\n");

}

outStr = sb.toString();

OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");

writer.write(outStr);

// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免

writer.flush();

// 别忘记关闭输入输出流

out.close();

br.close();

writer.close();

System.out.println("/* Load OK! */");

} catch (Exception e) {

e.printStackTrace();

}

}

坑一:

mysql 安装在c盘默认路径下,Program Files 文件夹名称之间有空格,导致程序明明运行一切正常,就是无法导出数据,文件大小始终为0kb。

解决办法:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。