package com.dus.utils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter; //数据库备份
public class MySQLDump { public static boolean sqlDump(String cmd,String filePath){
boolean falg = false;
try {
Runtime run = Runtime.getRuntime();
//cmd 命令:"C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump -uroot -proot email"
Process p = run.exec(cmd);
InputStream is = p.getInputStream();// 控制台的输出信息作为输入流
InputStreamReader isr = new InputStreamReader(is,"UTF-8");//设置输入流编码格式
BufferedReader br = new BufferedReader(isr);
//将控制台输入信息写入到文件输出流中
FileOutputStream fos = new FileOutputStream(filePath);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));
String temp = null;
while( (temp = br.readLine()) !=null){
bw.write(temp);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
falg = true;
System.out.println("/* Dump SQL File "+filePath+" OK! */");
} catch (IOException e) {
throw new RuntimeException("请将mysql命令添加到path中!",e);
}
return falg;
} //恢复数据库
/**
* 导入
*
*/
public static void sqlLoad(String cmd,String sqlPath) {
try {
Runtime rt = Runtime.getRuntime(); // 调用 mysql 的 cmd: C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe -uroot -proot email
Process child = rt.exec(cmd);
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
//输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(sqlPath), "utf8"));
//输出流
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
String inStr;
while ((inStr = br.readLine()) != null) {
writer.write(inStr);
writer.write("\r\n");
}
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();
System.out.println("/* Load SQL File "+sqlPath+" OK! */");
} catch (Exception e) {
e.printStackTrace();
} }
public static void main(String[] args) {
sqlDump("D:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump -uroot -proot weddingdb","e:/DBBack/weddingdb.sql");
//sqlLoad("C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe -uroot -proot email","c:/email.sql");
} }

servlet

package com.dus.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import com.dus.model.Log;
import com.dus.service.LogService;
import com.dus.utils.AppException;
import com.dus.utils.MySQLDump; /**
* 备份数据库 servlet
*/
public class MySQLDumpServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8"); PrintWriter pw = response.getWriter(); boolean flag = false; // 声明session
HttpSession session = null;
// 使用request对象取得session
session = request.getSession();
Integer userId = (Integer)session.getAttribute("userId"); // 若用户没有登录,则跳转到登录页面
if (userId == null) {
response.sendRedirect("toLogin");
} else { flag = MySQLDump.sqlDump("C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump -uroot -proot dusdb", "e:/DBBack/dusdb.sql"); if(flag) { pw.print("<script type='text/javascript'> alert('备份数据库成功! SQL脚本路径:e:/DBBack/dusdb.sql'); </script>"); // 添加操作日志 Log log = new Log();
log.setUser_id(userId);
log.setContent("数据库备份");
log.setTime(new Date()); LogService logService = new LogService();
try {
logService.save(log);
} catch (AppException e) {
e.printStackTrace();
} } else { pw.print("<script type='text/javascript'> alert('备份数据库失败!'); </script>"); } } } }

MySQL代码备份的更多相关文章

  1. MySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...

  2. Ubuntu Server下MySql数据库备份脚本代码

    明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...

  3. Java实现MySQL数据库备份(二)

    权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...

  4. Java实现MySQL数据库备份(一)

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...

  5. windows mysql 自动备份的几种方法

    转自:http://www.cnblogs.com/liongis/archive/2013/03/12/2956573.html 1.复制date文件夹备份===================== ...

  6. MYSQL自动备份策略的选择

    目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点 ...

  7. Java实现mysql数据库备份

    Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...

  8. mysql 数据库备份,恢复。。。。

    mysql 数据备份,恢复,恢复没写,这里只写了备份... 先暂作记录吧! 备份:表结构和数据完全分开,默认有一个文件会记录所有表的结构,然后表中数据的备份 如果超过分卷的大小则会分成多个文件,不然则 ...

  9. MySQL定时备份之使用Linux下的crontab定时备份实例

    这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下   复制代码代码如下: ##################################### ...

随机推荐

  1. 洛谷 P2577 [ZJOI2005]午餐

    这道题目比较难想. 题解: 算法:贪心+dp 容易想到贪心:吃饭慢的先打饭节约时间, 所以先将人按吃饭时间从大到小排序. 然后就是dp了: 首先,应该想到f[i][j][k]:前i个人,在1号窗口打饭 ...

  2. codeforces 1101F Trucks and Cities 区间dp+单调优化 好题

    题目传送门 题意简述:(来自洛谷) 有n个城市坐落在一条数轴上,第ii个城市位于位置ai​. 城市之间有m辆卡车穿行.每辆卡车有四个参数:si​为起点编号,fi​为终点编号,ci​表示每行驶1个单位长 ...

  3. [转] Spring Boot 揭秘与实战(二) 数据存储篇 - ElasticSearch

    [From] http://www.tuicool.com/articles/JBvQrmj 本文讲解Spring Boot基础下,如何使用 ElasticSearch,实现全文搜索. 版本须知 sp ...

  4. C++ GUI Qt4编程(13)-6.2preferencedialog

    1. 主要介绍了QStackedLayout.QListWidget.QDialogButtonBox的简单用法.2. QStackedLayout:   要使某个特定的子窗口部件可见,可以用setC ...

  5. js 替换中间四位手机号为 *

    replace(/(\d{})\d{}(\d{})/, '$1****$2')

  6. win10 sshsecureshellclient删除profile保存的信息

    C:\Users\joe\AppData\Roaming\SSH

  7. Java基础18-toString()方法、this关键字

    1.toString()方法 在java中,所有对象都有toString()这个方法 创建类时没有定义toString方法输出对象时会输出哈希码值 它通常只是为了方便输出,比System.out.pr ...

  8. Radix tree--reference

    source address:http://en.wikipedia.org/wiki/Radix_tree In computer science, a radix tree (also patri ...

  9. VS 连接数据库报错:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误

    VS报错:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider ...

  10. 分支结构if……else

    语法: if(条件) 语句或语句块1 end else begin 语句或者语句块2 end 特点: . else并不一定是必须的. . 如否条件为真,将执行语句和语句块1,条件为假时执行语句或语句块 ...