热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java备份还原mysql数据库_Java备份还原Mysql数据库

实体类packagecom.ews.util;***系统备份展示对象***publicclassDataFile{privateStringfileName;备份文件的名称priv

///实体类

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

if(file1[i].getName().equals("ramdit.txt")) continue;

SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

//前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date类型

java.util.Date dt = new Date(file1[i].lastModified());

String sDateTime = sdf.format(dt); //得到精确到秒的表示:08/31/2006 21:08:00

DataFile dataFile = new DataFile();

dataFile.setFileName(file1[i].getName());

dataFile.setFileDate(sDateTime);

String path = request.getContextPath();

String filePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/ewssite/back/"+file1[i].getName();

dataFile.setFilePath(filePath);

DecimalFormat df = new DecimalFormat( ".## ");

dataFile.setFileSize(df.format(file1[i].length()/1024000f));

dataFiles.add(dataFile);

}

return "findListData";

}

/**

* 配置 Mysql bin目录

* */

public void getConfig(){

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

BasicDataSource ba = (BasicDataSource)context.getBean("dataSource");

setUsername(ba.getUsername());

setPassword(ba.getPassword());

String url = ba.getUrl();

url = url.substring(13, url.length());

String[] temp = url.split("/");

String[] temp1 = temp[0].split(":");

setHost(temp1[0]);

setPORT(temp1[1]);

for (int i = 0; i

String temp2 = temp[1].charAt(i)+"";

if(temp2.equals("?")){

setDbname(temp[1].substring(0,5));

}

}

}

/**

* 备份

* */

public String backup(){

getConfig();

//得到配置文件

try {

Runtime rt = Runtime.getRuntime();

String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/"+System.currentTimeMillis()+".sql";

String mysql = "mysqldump -u" + getUsername()+ " -p" + getPassword() + " --default-character-set=utf8 -h"+getHost()+" -P"+getPORT()+" " + getDbname() +" >"+"\""+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()+"

f68f2add0b68e4f9810432fce46917b7.png

相关文章

相关视频



推荐阅读
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
author-avatar
民主公园
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有