mysql 数据库备份和恢复

//数据库备份

public String backupMySqlToFile() {
      String path=PropertiesReader.getIntance().getProperty("path");
      String username=PropertiesReader.getIntance().getProperty("username");
      String password=PropertiesReader.getIntance().getProperty("password");
      String databasename=PropertiesReader.getIntance().getProperty("databasename");
      String outStr = "";
      try {
          System.out.println();
             Runtime rt = Runtime.getRuntime();
           // Process child = rt.exec("mysqldump -h192.168.0.100 -ubjcert -pbjcert bjcert3");// 设置导出编码为utf8。这里必须是utf8
            //Process child = rt.exec("mysqldump -h10.10.110.9 -ubjcert -pbjcert bjcert3");// 设置导出编码为utf8。这里必须是utf8
           //  Process child = rt.exec("mysqldump -h10.10.110.20 -ubjcert -pbjcert bjcert3");// 设置导出编码为utf8。这里必须是utf8
             Process child = rt.exec("mysqldump -h"+path+" -u"+username+" -p"+password+" "+databasename);
             // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行

             InputStream in = child.getInputStream();// 控制台的输出信息作为输入流

             InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
             String inStr;
             StringBuffer sb = new StringBuffer("");
             // 组合控制台输出信息字符串
             BufferedReader br = new BufferedReader(xx);
             while ((inStr = br.readLine()) != null) {
                 sb.append(inStr + "/r/n");
             }
             outStr = sb.toString();
             in.close();
             xx.close();
             br.close();

         } catch (Exception e) {
             e.printStackTrace();
         }
         return outStr;
     }

 

 

 

 

 

 

 

 

 

//数据库恢复

public void restoreMysqlFromFile(File f) {
      String path=PropertiesReader.getIntance().getProperty("path");
      String username=PropertiesReader.getIntance().getProperty("username");
      String password=PropertiesReader.getIntance().getProperty("password");
      String databasename=PropertiesReader.getIntance().getProperty("databasename");
         try {
             FileInputStream fis = new FileInputStream(f);
             Runtime rt = Runtime.getRuntime();
             Process child = rt.exec("mysql -h"+path+" -u"+username+" -p"+password+" "+databasename);
            // Process child = rt.exec("mysql -h10.10.110.20 -ubjcert -pbjcert bjcert3");
            // Process child = rt.exec("mysql -h10.10.110.9 -ubjcert -pbjcert bjcert3");
             OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流

             String inStr;
             StringBuffer sb = new StringBuffer("");
             String outStr;
             BufferedReader br = new BufferedReader(new InputStreamReader(fis, "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();
             fis.close();
         } catch (Exception e) {
             e.printStackTrace();
         }

     }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值