java备份还原mysql数据库_Java备份还原Mysql数据库
///实体类
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 < file1.length; 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 < temp[1].length(); 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()+"
相关文章
相关视频
java备份还原mysql数据库_Java备份还原Mysql数据库相关推荐
- java如何向mysql插入_java中怎么向数据库插入数据 ?
展开全部 Java程序向数据库中插入数据,代码如下://首先创建数据库,(access,oracle,mysql,sqlsever)其中之一,32313133353236313431303231363 ...
- java和连接数据库的驱动_java中连接各数据库的驱动类和连接方式
1.JAVA连接ACCESS数据库 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odb ...
- java图片保存文件到数据库_java保存图片内容到数据库
本文使用mysql数据库举例插入图片到数据库和从数据库取出图片在页面显示: 一.建表 创建一个测试保存图片的表 create table t_save_img( name varchar(200), ...
- java spring mysql配置_java相关:mysql+spring+mybatis实现数据库读写分离的代码配置
java相关:mysql+spring+mybatis实现数据库读写分离的代码配置 发布于 2020-4-4| 复制链接 分享一篇关于关于mysql+spring+mybatis实现数据库读写分离的代 ...
- java mysql 事物_java基础之MySQL事务和视图
第三节 事务和视图 3.1事务 事务是用来维护数据库完整性的,它能够保证一系列的MySQL操作要么全部执行,要么全不执行.举一个例子来进行说明,例如转账操作:A账户要转账给B账户,那么A账户上减少的钱 ...
- 为什么链接不上mysql数据库_java链接不上数据库,怎么解决!
居正w 去年刚好做过这个,给你贴下我的链接代码try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver ...
- java获取达梦数据库_Java连接达梦数据库驱动dm_jdbc
[实例简介] Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm ...
- java 清空一个list数据库_java – JPA EntityManager删除数据库中的所有记录
我有一个插入我的数据库的Servlet.这工作正常.第二个Servlet显示第一个插入的内容,但每当我运行显示的Servlet时,我所有表中的所有记录都将被删除!我的JPA实现是 EclipseLin ...
- java 不能执行mysql存储过程_java无法执行mysql中的函数及存储过程的.sql备份文件...
需求:用java程序执行[包含数据&结构&函数&存储过程]的.sql备份文件 问题记录: 1.在执行完insert类型的语句后,中文内容会显示乱码. 解决:将mysql参数中c ...
最新文章
- 在线学位课程_您在四年制计算机科学学位课程中学到的知识
- CloudStats :一款SaaS 服务器监控工具
- 用python打造一款文件搜索工具,所有功能自己定义!
- 字符串按单词逆序输出c 语言,字符串中的每个单词倒序输出问题
- linux 查看共享内存最大值,linux上更改共享内存的最大值
- Android学习之网上商城(上)
- 6月第二周中国五大顶级域名增2.4万 美国减6.8万
- 四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取
- Matlab打开文件替换变量,读取matlab某个路径下的“.mat”文件,改变文件中的内容,并以原名字,变量保存...
- bzoj 3261 最大异或和【可持久化trie】
- AT4 more about the sphere
- python编程入门指南-Python 入门指南
- shell win10 改成cmd_win10系统必做优化,让你的电脑告别卡顿,运行速度至少提升20%...
- 「leetcode」127. 单词接龙【广度优先搜索】超详细讲解!
- Android 还可以走多久?
- Windows2012开机启动项设置
- 通用技术 支付笔记之 PayPal 支付原理
- mfc 使用flash控件注意事项
- Android 10.0设置默认sim1卡使用数据流量和发送短信
- C语言求卢卡斯序列,卢卡斯数列 斐波那契数列和卢卡斯数列!
热门文章
- Spring Boot2 集成 jasypt 3.0.4 配置文件敏感信息加密
- 导入Oracle 数据库镜像,创建Oracle虚拟机_01
- 怎样把间隔的几个commit整理成1个呢?
- python程序员自我评价_写给程序员的简明 Python(1)
- 大数据可视化html模板开源_8个可靠好用的开源数据可视化工具推荐
- 申请美国计算机科学,美国计算机科学的申请特点
- vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...
- java http get_我是如何进入阿里巴巴的-面向春招应届生Java面试指南(九)
- python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程
- android studio中断,Android Studio是否有任何修复方法可以在Macbook Pro中断开测试设备的连接?...