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()+"

f68f2add0b68e4f9810432fce46917b7.png

相關文章

相關視頻

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532082.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學pyqt5之前需要學python嗎_快速學習pyqt5(1)--入門

學習于&#xff1a;PyQt5圖形界面編程 想要系統學習的同學建議可以去這個專欄好好學習&#xff0c;沒有任何語言基礎和計算機基礎的也建議直接去看那個專欄。我這里是有java基礎了&#xff0c;所以就不重復&#xff0c;針對快速學習使用。學習這個的目的是完成學校的SIT項目&am…

reboot mysql fail_mysql 5.7.18,在系統重啟后,為什么無法啟動?

度娘也不給力&#xff0c;只好自己研究了。先把結論寫出來吧。把pid文件換個位置&#xff0c;就好了。問題是&#xff0c; mysqld.servce的文件是從mysql的安裝目錄拷貝的&#xff0c;導致沒有懷疑pid文件位置的問題。一開始還懷疑是不是自己在一些文件里拼寫有誤。后來&#x…

mysql 查看鎖_別吵吵,分布式鎖也是鎖

Tomcat是這個系統的核心組成部分&#xff0c; 每當有用戶請求過來&#xff0c;Tomcat就會從線程池里找個線程來處理&#xff0c;有的執行登錄&#xff0c;有的查看購物車&#xff0c;有的下訂單&#xff0c;看著屬下們盡心盡職地工作&#xff0c;完成人類的請求&#xff0c;Tom…

php解析js的 arraybuffer_JS的所謂的第七種數據類型Symbol

首先&#xff0c;為什么說叫所謂呢&#xff1f;因為在2007年之前Js給予我們typeof解析數據類型的一共有六種(一直有爭議&#xff0c;但是我們暫時就按typeof來算)functionNumberObjectbooleanStringundefined但當我們去 typeof Symbol () 的時候&#xff0c;會驚奇的發現&#…

JAVA MYSQL從數據庫中提取圖片_java web將圖片存到儲數據庫和從數據庫中讀取圖片...

(Notice&#xff1a;以下所有經驗也是我根據網上的經驗整理的&#xff0c;如有侵權可以聯系我刪除&#xff0c;Wx:IT_Ezra&#xff0c;QQ 654303408。 有問題討論也可聯系我&#xff0c;QQ同上。)一、分析一下基本流程從前臺頁面獲取圖片&#xff0c;后臺接收圖片文件轉化成數據…

Ubuntu系統如何安裝和卸載CUDA和CUDNN

背景 最近在學習PaddlePaddle在各個顯卡驅動版本的安裝和使用&#xff0c;所以同時也學習如何在Ubuntu安裝和卸載CUDA和CUDNN&#xff0c;在學習過程中&#xff0c;順便記錄學習過程。在供大家學習的同時&#xff0c;也在加強自己的記憶。本文章以卸載CUDA 8.0 和 CUDNN 7.05 …

session.merge 緩存不更新_如何保證緩存與數據庫雙寫時的數據一致性?

在做系統優化時&#xff0c;想到了將數據進行分級存儲的思路。因為在系統中會存在一些數據&#xff0c;有些數據的實時性要求不高&#xff0c;比如一些配置信息。基本上配置了很久才會變一次。而有一些數據實時性要求非常高&#xff0c;比如訂單和流水的數據。所以這里根據數據…

java替換圖片中文字_Java 添加、替換、刪除Word中的圖片

文檔中&#xff0c;可以通過圖文混排的方式來增加內容的可讀性&#xff0c;相比純文本文檔&#xff0c;在內容展現方式上也更具美觀性。在給文檔添加圖片時&#xff0c;可設置圖片的文本環繞方式、旋轉角度、圖片高度/寬度等&#xff1b;另外&#xff0c;也可對文檔中已有的圖片…

kafka如何保證不重復消費又不丟失數據_Kafka寫入的數據如何保證不丟失?

我們暫且不考慮寫磁盤的具體過程&#xff0c;先大致看看下面的圖&#xff0c;這代表了 Kafka 的核心架構原理。Kafka 分布式存儲架構那么現在問題來了&#xff0c;如果每天產生幾十 TB 的數據&#xff0c;難道都寫一臺機器的磁盤上嗎?這明顯是不靠譜的啊!所以說&#xff0c;這…

不允許輸入特殊字符的正則表達式_JavaScript正則表達式常用技巧

正則表達式是用于匹配字符串中字符組合的模式。在 JavaScript 中&#xff0c;正則表達式也是對象。這些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正則表達式的掌握程度能粗略地看出程序員的技術底子&#xff…

latex 算法_GitHub項目awesome-latex-drawing新增內容(四):繪制貝葉斯網絡

近期&#xff0c;我們整理和開源了一個基于LaTeX的科技繪圖項目&#xff0c;并將其取名為awesome-latex-drawing&#xff08;GitHub網址為&#xff1a;https://github.com/xinychen/awesome-latex-drawing&#xff09;&#xff0c;案例包括貝葉斯網絡、圖模型、矩陣/張量示意圖…

python123動物重量排序_python進階

面向對象oopclass Student(object):def __init__(self,name,score)self.name nameself.score scoredef print_score(self)print(%s: %s % (self.name,self.score))給對象發消息實際上就是調用對象對應的關聯函數&#xff0c;我們稱之為對象的方法(Method)。面向對象的程序寫出…

mysql中的生日應該是什么類型_MySQL中的定點數類型

上一篇文章我們嘮叨了浮點數&#xff0c;知道了浮點數存儲小數是不精確的。本篇繼續嘮叨一下MySQL中的另一種存儲小數的方式 —— 定點數。浮點數文章閃現&#xff1a;什么, 0.3 - 0.2 ≠ 0.1 ? 什么鬼定點數類型正因為用浮點數表示小數可能會有不精確的情況&#xff0c;在一些…

python怎么制作圖像_python數字圖像處理(5):圖像的繪制

實際上前面我們就已經用到了圖像的繪制&#xff0c;如&#xff1a;io.imshow(img)這一行代碼的實質是利用matplotlib包對圖片進行繪制&#xff0c;繪制成功后&#xff0c;返回一個matplotlib類型的數據。因此&#xff0c;我們也可以這樣寫&#xff1a;importmatplotlib.pyplot …

axios代理跨域 cli4_vuecli 3.0之跨域請求代理配置及axios路徑配置 莫小龍

vue-cli 3.0之跨域請求代理配置及axios路徑配置問題&#xff1a;在前后端分離的跨域請求中&#xff0c;報跨域問題配置&#xff1a;vue.config.js&#xff1a;module.exports {runtimeCompiler: true,publicPath: /, // 設置打包文件相對路徑devServer: {// open: process.pla…

string轉為char數組_StringBuilder的區別是什么?String是不可變?一點課堂(多岸學院)...

String和StringBuffer、StringBuilder的區別可變性簡單的來說&#xff1a;String 類中使用 final 關鍵字字符數組保存字符串&#xff0c;private final char value[]&#xff0c;所以 String 對象是不可變的。而StringBuilder 與 StringBuffer 都繼承自 AbstractStringBuild…

python去年軟件排行_2017年編程語言排行榜,Python位居榜首(C語言需求最大)

最近IEEE Spectrum 發布了編程語言交互式排行榜&#xff0c;為很多學習代碼的朋友們詳解各類代碼語言的需求和占有率。為學習代碼的朋友們能更加重視哪一種編程語言而有一個明確的方向。下面排行榜123網為你公布2017年編程語言排行榜,Python位居榜首(C語言需求最大)。2017年編程…

mysql test數據庫_mysql數據庫test

Re介紹一下CentOS下MySQL數據庫的安裝與配置方法MySQL數據庫配置的具體步驟&#xff1a;1、編輯MySQL的配置文件&#xff0c;使用vi /etc/my.cnf[rootsample ~]# vi /etc/my.cnf  ← 編輯MySQL的配置文件[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sock# Defau…

mysql 升級 openssl_【1分鐘教程】LNMP架構應用實戰 Openssl升級操作

由于實際生產環境需求&#xff0c;需要將LNMP環境中的openssl版本升級至目前最新版本openssl-1.1.0c&#xff0c;這玩意升級還真的不是一般的麻煩&#xff0c;由于它與系統各種服務都有相關的聯系&#xff0c;比如ssh服務等&#xff0c;因此&#xff0c;升級非常的繁瑣,所以今天…

miui秒解bl鎖_MIUI12解鎖bl篇(原諒我的過失,接上篇文章)

求原諒真心求原諒由于我的疏忽&#xff0c;上期教程不完整&#xff0c;對大家造成不便在這里給大家真誠道歉&#xff01;對不起&#xff01;請收下我的膝蓋&#xff01;&#xff01;&#xff01;我的上個教程小米手機MIUI系統降級任意版本通用教程&#xff0c;MIUI12→MIUI9因為…