欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

Java备份还原Mysql数据库

程序员文章站 2022-05-19 08:10:30
...
///实体类
package com.ews.util;
/**
 * 系统备份展示对象
 * 
 * */
public class DataFile {
 private String fileName;//备份文件的名称
 private String fileDate;//备份文件的日期
 private String filePath;//备份文件的地址
 private String fileSize;//备份文件的大小
 public String getFileSize() {
  return fileSize;
 }
 public void setFileSize(String fileSize) {
  this.fileSize = fileSize;
 }
 public String getFileName() {
  return fileName;
 }
 public void setFileName(String fileName) {
  this.fileName = fileName;
 }
 public String getFileDate() {
  return fileDate;
 }
 public void setFileDate(String fileDate) {
  this.fileDate = fileDate;
 }
 public String getFilePath() {
  return filePath;
 }
 public void setFilePath(String filePath) {
  this.filePath = filePath;
 }
}
  
///实现备份代码
package com.ews.action;
  
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.sql.Date;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
  
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.fileupload.FileItem;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
  
import com.ews.util.DataFile;
  
public class DataAction extends EwsAction{
 private String username;
 private String password;
 private String host;
 private String PORT;
 private String dbname;
 private List dataFiles = new ArrayList();
 private File reductionFile;
 public File getReductionFile() {
  return reductionFile;
 }
 public void setReductionFile(File reductionFile) {
  this.reductionFile = reductionFile;
 }
 public List getDataFiles() {
  return dataFiles;
 }
 public void setDataFiles(List dataFiles) {
  this.dataFiles = dataFiles;
 }
 public String getHost() {
  return host;
 }
 public void setHost(String host) {
  this.host = host;
 }
 public String getPORT() {
  return PORT;
 }
 public void setPORT(String pORT) {
  PORT = pORT;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getDbname() {
  return dbname;
 }
 public void setDbname(String dbname) {
  this.dbname = dbname;
 }
 /**
  * 删除
  * */
 public String delete(){
  String fileName = request.getParameter("fileName");
  System.out.println(fileName);
  String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/"+fileName;
  File file = new File(backPath);
  file.delete();
  return "delete";
 }
 /**
  * 得到备份文件的List集合
  * 
  * */
 public String findList(){
  String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/";
  File file = new File(backPath);
  if (!file.exists())
   return "findListData";
  File[] file1 = file.listFiles();
  for (int i = 0; i "+"\""+backPath+"\"";   
   Process proc = rt.exec("cmd.exe /c "+mysql);// 设置导出编码为utf8。这里必须是utf8
   //String backExe = ServletActionContext.getServletContext().getRealPath("/")+"bin/mysqldump.exe"; 
   //String mysql = getDbname()+ " -u" + getUsername()+ " -p" + getPassword() + " --default-character-set=utf8 -h"+getHost()+" -P"+getPORT()+" >"+"\""+backPath+"\""; 
   int tag = proc.waitFor();// 等待进程终止  
  } catch (Exception e) {
   e.printStackTrace();
  }
  return "backup";
 }
 /**
  * 还原
  * */
 public String load(){
  String sqlPath="";
  if(request.getParameter("selectName")!=null)
   sqlPath = request.getParameter("selectName");
  if(reductionFile!=null){
   String name = upload(reductionFile);
   sqlPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/" + name;
  }
//  System.out.println(sqlPath);
  if(sqlPath.substring(sqlPath.lastIndexOf(".")+1).equals("sql")){
   getConfig();
   setHost("127.0.0.1");
   setUsername("root");
   setPassword("root");
   setDbname("test");
   //得到配置文件
   try {
    Runtime rt = Runtime.getRuntime();
    String createDb = "mysqladmin -u" + getUsername()+ " -p" + getPassword() + " create "+getDbname();
    String mysql = "mysql -u" + getUsername()+ " -p" + getPassword() + " "+getDbname()+"