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

这是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(); 
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值