1. package com.dus.utils;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.io.OutputStream;
  11. import java.io.OutputStreamWriter;
  12.  
  13. //数据库备份
  14. public class MySQLDump {
  15.  
  16. public static boolean sqlDump(String cmd,String filePath){
  17. boolean falg = false;
  18. try {
  19. Runtime run = Runtime.getRuntime();
  20. //cmd 命令:"C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump -uroot -proot email"
  21. Process p = run.exec(cmd);
  22. InputStream is = p.getInputStream();// 控制台的输出信息作为输入流
  23. InputStreamReader isr = new InputStreamReader(is,"UTF-8");//设置输入流编码格式
  24. BufferedReader br = new BufferedReader(isr);
  25. //将控制台输入信息写入到文件输出流中
  26. FileOutputStream fos = new FileOutputStream(filePath);
  27. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));
  28. String temp = null;
  29. while( (temp = br.readLine()) !=null){
  30. bw.write(temp);
  31. bw.newLine();
  32. }
  33. bw.flush();
  34. bw.close();
  35. br.close();
  36. falg = true;
  37. System.out.println("/* Dump SQL File "+filePath+" OK! */");
  38. } catch (IOException e) {
  39. throw new RuntimeException("请将mysql命令添加到path中!",e);
  40. }
  41. return falg;
  42. }
  43.  
  44. //恢复数据库
  45. /**
  46. * 导入
  47. *
  48. */
  49. public static void sqlLoad(String cmd,String sqlPath) {
  50. try {
  51. Runtime rt = Runtime.getRuntime();
  52.  
  53. // 调用 mysql 的 cmd: C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe -uroot -proot email
  54. Process child = rt.exec(cmd);
  55. OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
  56. //输入流
  57. BufferedReader br = new BufferedReader(new InputStreamReader(
  58. new FileInputStream(sqlPath), "utf8"));
  59. //输出流
  60. OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
  61. String inStr;
  62. while ((inStr = br.readLine()) != null) {
  63. writer.write(inStr);
  64. writer.write("\r\n");
  65. }
  66. writer.flush();
  67. // 别忘记关闭输入输出流
  68. out.close();
  69. br.close();
  70. writer.close();
  71. System.out.println("/* Load SQL File "+sqlPath+" OK! */");
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75.  
  76. }
  77. public static void main(String[] args) {
  78. sqlDump("D:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump -uroot -proot weddingdb","e:/DBBack/weddingdb.sql");
  79. //sqlLoad("C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe -uroot -proot email","c:/email.sql");
  80. }
  81.  
  82. }

servlet

  1. package com.dus.web;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.Date;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12.  
  13. import com.dus.model.Log;
  14. import com.dus.service.LogService;
  15. import com.dus.utils.AppException;
  16. import com.dus.utils.MySQLDump;
  17.  
  18. /**
  19. * 备份数据库 servlet
  20. */
  21. public class MySQLDumpServlet extends HttpServlet {
  22.  
  23. @Override
  24. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26. doPost(request, response);
  27. }
  28.  
  29. @Override
  30. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  31. throws ServletException, IOException {
  32.  
  33. response.setContentType("text/html;charset=UTF-8");
  34. request.setCharacterEncoding("UTF-8");
  35. response.setCharacterEncoding("UTF-8");
  36.  
  37. PrintWriter pw = response.getWriter();
  38.  
  39. boolean flag = false;
  40.  
  41. // 声明session
  42. HttpSession session = null;
  43. // 使用request对象取得session
  44. session = request.getSession();
  45. Integer userId = (Integer)session.getAttribute("userId");
  46.  
  47. // 若用户没有登录,则跳转到登录页面
  48. if (userId == null) {
  49. response.sendRedirect("toLogin");
  50. } else {
  51.  
  52. flag = MySQLDump.sqlDump("C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump -uroot -proot dusdb", "e:/DBBack/dusdb.sql");
  53.  
  54. if(flag) {
  55.  
  56. pw.print("<script type='text/javascript'> alert('备份数据库成功! SQL脚本路径:e:/DBBack/dusdb.sql'); </script>");
  57.  
  58. // 添加操作日志
  59.  
  60. Log log = new Log();
  61. log.setUser_id(userId);
  62. log.setContent("数据库备份");
  63. log.setTime(new Date());
  64.  
  65. LogService logService = new LogService();
  66. try {
  67. logService.save(log);
  68. } catch (AppException e) {
  69. e.printStackTrace();
  70. }
  71.  
  72. } else {
  73.  
  74. pw.print("<script type='text/javascript'> alert('备份数据库失败!'); </script>");
  75.  
  76. }
  77.  
  78. }
  79.  
  80. }
  81.  
  82. }

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. Jquery动态绑定事件处理函数 bind / on / delegate

    1.bind方法绑定的事件处理函数不会应用到后来添加到DOM中的新元素.比如你在用bind给页面元素绑定事件之后,又新添加了一些与之前绑定过事件的元素一样的DOM元素,但是这些事件并不能在新的DOM元 ...

  2. UVALive - 2678 二分/尺取

    题意:求最小的长度L满足该长度上的元素和大于等于S 最近dp做多了总有一种能用dp解决一切的错觉 二分长度解决 #include<iostream> #include<algorit ...

  3. 全排列 next_permutation() 函数的使用

    看来看去还是这篇博客比较简洁明了 https://www.cnblogs.com/My-Sunshine/p/4985366.html 顺便给出牛客网的一道题,虽然这道题用dfs写出全排列也能做,题意 ...

  4. Python学习 day08

    一.open打开文件 文件操作包含以下三个步骤: 1.文件路径 2.编码方式 3.操作方式:‘’只读‘’.“只写”.“读写” 等 1.只读 r (mode默认值) 例: f = open('d:\py ...

  5. 解决matplotlib绘图中文乱码

    # 指定默认字体 下面三条代码用来解决绘图中出现的乱码 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams[ ...

  6. URL篇之URL

    URL(统一资源定位)是网络上使用的资源定位的方案,它是URI(由URL和URN组成)的子集. URL的通用格式 <scheme>://<user>:<password& ...

  7. 飞檐走壁navMesh

    http://www.manew.com/thread-106030-1-1.html

  8. 1.2 js基础

    1.onchange    99%用到select上边. 2.js是干什么的,修改css样式和属性   3.选项卡步骤   1.获取元素 2.循环给按钮加自定义属性 3.循环给按钮加事件   4.封装 ...

  9. postgres formencode.api.Invalid

    错误提示: Invalid: expected an int in the IntCol 'geom', got <type 'str'> '010100000007EBFFFC3A611 ...

  10. 1.Vue.js的常用指令

      Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得 ...