java 备份mysql数据库

本文介绍了一个使用Java实现MySQL数据库备份的方法。通过调用mysqldump命令并将其输出重定向到.sql文件来完成整个备份过程。文章详细展示了如何通过Java代码执行这一流程。

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;


public class Test {
public static void backup() {   
       try {   
           Runtime rt = Runtime.getRuntime();   
 
           // 调用 mysql 的 cmd:   
           Process child = rt   
                   .exec("D:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump.exe -uroot -proot -t test");// 设置导出编码为utf8。这里必须是utf8   
             
           // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行   
           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(   
                   "d:/turboshop.sql");   
           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("/* Output OK! */");   
 
       } catch (Exception e) {   
           e.printStackTrace();   
       }   
 
   }   


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
backup();
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值