您的位置:首页 > 数据库 > MySQL

jsp + Servlet 备份MySQL数据库的方法

2013-03-13 00:19 429 查看
这是JavaBean里的两个方法,在Servlet调用backup和load方法,传入要保存的地址/ 恢复文件的地址。

public static void backup(String filePath) throws IOException{

try { 
Runtime rt = Runtime.getRuntime();   
Process child = rt.exec("mysqldump -hlocalhost -u用户名 -p密码 数据库名");
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
String inStr; 
StringBuffer sb = new StringBuffer(""); 
String outStr; 
// 组合控制台输出信息字符串 
BufferedReader br = new BufferedReader(xx); 
while ((inStr = br.readLine()) != null) { 
sb.append(inStr + "\r\n"); 

outStr = sb.toString();//备份出来的内容是一个字条串
// 要用来做导入用的sql目标文件: 
FileOutputStream fout = new FileOutputStream(filePath); 
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); 
writer.write(outStr);//写文件 
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 
writer.flush();
// 别忘记关闭输入输出流 
in.close(); 
xx.close(); 
br.close(); 
writer.close(); 
fout.close();
System.out.println("");
} catch (Exception e) { 
e.printStackTrace(); 
}


// 恢复数据库文件
public static void load(String filePath) throws IOException{
try { 
Runtime rt = Runtime.getRuntime(); 
Process child = rt.exec("mysql -u用户名 -p密码 数据库名"); 
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); 
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 
writer.flush(); 
out.close(); 
br.close(); 
writer.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: