如何使用java程序备份和恢复MySql数据库?

如何使用java程序备份和恢复MySql数据库? 
注:要将mysql的bin目录加入到环境变量Path中

将MySql中的数据库导出到文件中 备份

import java.io.*;
import java.lang.*;

public class BeiFen {

  public static void main(String[] args) {
   // 数据库导出
   String user = "root"; // 数据库帐号
   String password = "root"; // 登陆密码
   String database = "test"; // 需要备份的数据库名
   String filepath = "e:\\test.sql"; // 备份的路径地址

String   stmt1   =   "D:\\mysql5027\\bin\\mysqldump   "   + database   +   "   -u   "   +   user   +   "   -p"
    +   password   +   "   --result-file="   +   filepath;

  
   /*
   * String stmt1 = "mysqldump " + database + " -u " + user + " -p"
   * + password + " --result-file=" + filepath;
   *
   * String mysql="mysqldump test -u root -proot
   * --result-file=d:\\test.sql";
   */

   try {
   Runtime.getRuntime().exec(stmt1);
   System.out.println("数据已导出到文件" + filepath + "中");
   }
   catch (IOException e) {
   e.printStackTrace();
   }
  }
}

 

将数据从磁盘上的文本文件还原到MySql中的数据库

import java.io.*; 
import java.lang.*; 

/* 
* 还原MySql数据库 
* */ 
public class Recover { 

  public static void main(String[] args) { 

   String filepath = "d:\\test.sql"; // 备份的路径地址  
  //新建数据库test 

  String stmt1 = "mysqladmin -u root -proot create test"; 

  String stmt2 = "mysql -u root -proot test < " + filepath; 
  String[] cmd = { "cmd", "/c", stmt2 }; 

   try { 
  Runtime.getRuntime().exec(stmt1); 
  Runtime.getRuntime().exec(cmd); 
  System.out.println("数据已从 " + filepath + " 导入到数据库中"); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  }  

}



另外的程序

package jakie;

//import java.io.*;

public class Backup {
    private String user_name;//数据库用户名
    private String user_psw;//数据库密码
    private String db_name;// 需要备份的数据库名
    private String host_ip;
    private String user_charset;
    private String backup_path; //存放备份文件的路径
    private String stmt;

    public Backup(String user_name,String user_psw,String db_name,String host_ip,String user_charset,String backup_path){
        this.user_name=user_name;
        this.user_psw=user_psw;
        this.db_name=db_name;
        //主机IP;
        if(host_ip==null||host_ip.equals(""))
            this.host_ip="localhost";//默认为本机
        else
            this.host_ip=host_ip;
        //字符集
        if(user_charset==null||user_charset.equals(""))
            this.user_charset=" "; //默认为安装时设置的字符集
        else
            this.user_charset=" --default-character-set="+user_charset;
        this.backup_path=backup_path;

        this.stmt="d:\\MYSQL\\bin\\mysqldump "+this.db_name+" -h "+this.host_ip+" -u"+this.user_name+" -p"+this.user_psw
                +this.user_charset+" --result-file="+this.backup_path;
    }

    public boolean backup_run(){
        boolean run_result=false;
        try{
            Runtime.getRuntime().exec(this.stmt);
            run_result=true;
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            return run_result;
        }
    }
    public static void main(String[] args){
        Backup backup=new Backup("root","000000","jakie",null,"utf8","e:\\test.sql");
        boolean result=backup.backup_run();
        if(result)
            System.out.println("备份成功");       

    }
}

你可能感兴趣的:(mysql)