备份mysql数据库

来源:互联网 发布:大华电子秤软件 编辑:程序博客网 时间:2024/05/21 19:42

static String  StrError="";
 /**
  * 备份数据库文件
  * @param paths   路径
  * @param user    用户名
  * @param pass    密码
  * @param database数据库名称
  * @return
  */
 public static boolean backup(String paths,String user,String pass,String database) {//备份  
     try {  
      System.out.println("Start");
         Runtime rt = Runtime.getRuntime();
         String mysql="mysqldump -u "+user+" ";
         if(pass=="")
          mysql +=""+database+""; 
         else
          mysql += "-p "+pass+" "+database+"";  
         // 调用 mysql 的 cmd: 
         System.out.println(mysql);
         Process child = rt  
         .exec("cmd /c "+mysql);// 设置导出编码为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(  
           paths);  
         OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");  
         writer.write(outStr);  
         // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免  
         writer.flush();   
         // 别忘记关闭输入输出流  
         in.close();  
         xx.close();  
         br.close();  
         writer.close();  
         fout.close();   
       String error="备份成功!";  
           
         StrError = (new String(error.getBytes("ISO-8859-1"),"UTF-8"));    
  
     } catch (Exception e) {  
         e.printStackTrace();  
         StrError=StrError+"failure!<br>";
         return false;
     }  
  
     return true;  
 }

原创粉丝点击