日期:2014-05-16  浏览次数:20345 次

使用java备份还原MySQL数据库
import java.io.*;

public class BackupAndLoad {
public static void main(String[] args) {

  backup();
   load();
}

?

/**
  * 备份检验一个sql文件是否可以做导入文件用的一个判断方法:把该sql文件分别用记事本和ultra
  * edit打开,如果看到的中文均正常没有乱码,则可以用来做导入的源文件(不管sql文件的编码格式如何,也不管db的编码格式如何)
  */
public static void backup() {


   String user = "root"; // 数据库帐号
   String password = "70689341"; // 登陆密码
   String database = "finacing"; // 需要备份的数据库名
   String filepath = "e:\\finacing.sql"; // 备份的路径地址
  
   String stmt1 = "mysqldump " database " -u " user " -p" 
       password " --default-character-set=gb2312 --result-file=" filepath;
   //--default-character-set这儿设为你安装数据库时所选择的语言,比如说你安装MySQL里用的默认的UTF-8,这儿
   //就设为UTF8,若是gb2312的话应设为gb2312,如果这儿设得不对的话,你用ultraedit打开这个备份后的sql文件时,
   //中文部分显示乱码。
   try {
    Runtime.getRuntime().exec(stmt1);
    System.out.println("数据已导出到文件" filepath "中");
   } catch (IOException e) {
    e.printStackTrace();
   }

}

/**
  * 导入
  * 
  */
public static void load() {

   String filepath = "e:\\finacing.sql"; // 备份的路径地址
   
   // 新建数据库finacing
   String stmt1 = "mysqladmin -u root -p70689341 create finacing";
   //-p后面加的是你的密码
   String stmt2 = "mysql -u root -p70689341 finacing < " filepath;
   String[] cmd = { "cmd", "/c", stmt2 };
  
   try {
    Runtime.getRuntime().exec(stmt1);
    Runtime.getRuntime().exec(cmd);
    System.out.println("数据已从 " filepath " 导入到数据库中");
   } catch (IOException e) {
    e.printStackTrace();
   }

}
}

?