mysql的数据库的备份与恢复
2016-04-25 23:16
826 查看
package com.shxt.fsc.db.base; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @ClassName: DBBeiFen * @date 2015-11-22 下午03:33:06 * @description 进行mysql 数据库的备份和恢复的操作 */ public class DBBeiFen { /** * 数据库的用户名 */ static String name = "root"; /** * 数据库的密码 */ static String password = "root"; /** * 数据库的名 */ String dataName = ""; /** * 放在的目录在哪 */ String path = ""; /** * * 通过对mysql的指令 进行对数据库的备份 * 这里面有几个参数需要注意的 * name,password,dataName都是数据库 名字 密码 数据库名 * path是备份的目录的路径 * @time:2015-11-22 下午03:34:20 */ public void Benfen() { InputStream in = null; InputStreamReader reader = null; BufferedReader br = null; FileOutputStream fout = null; OutputStreamWriter write = null; try { Runtime rt = Runtime.getRuntime(); // 这是在控制台写入的语句 String cmd = "mysqldump -h localhost -u" + name + " -p" + password +" "+dataName; // 进行执行 Process pross = rt.exec(cmd); // 将这个数据进行导出 in = pross.getInputStream(); // 进行转码 reader = new InputStreamReader(in, "utf-8"); //读入的String String inStr; // 建立一个SringBuffer进行拼接的作用 提高效率 StringBuffer sb = new StringBuffer(); // 最有进行接收的值 String outStr; // 在进行套用一个管子 br = new BufferedReader(reader); // 将cmd中的数据进行去读和拼接 while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } //拼接成功 outStr = sb.toString(); //文件名日期的时候的命名 SimpleDateFormat format = new SimpleDateFormat( "yyyy.MM.dd hh小时mm分ss秒"); String date = format.format(new Date()); File file = new File(path + date + ".sql"); // 导出的地方 fout = new FileOutputStream(file); // 继续的进行 write = new OutputStreamWriter(fout, "utf-8"); //进行写入 write.write(outStr); write.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ //进行关闭流的对象 try { if(in != null){ in.close(); } if( reader != null){ reader.close(); } if(br != null){ br.close(); } if(fout != null){ fout.close(); } if(write != null){ write.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * * 进行查看文件夹中备份的文件 * 然后通过选择进行恢复数据库 * 传入的url 是文件夹的路径 * @param url * @return List */ public List<String> query(){ List<String> list = new ArrayList(); //建立一个File File file = new File(path); //读出目录下的子文件 File[] list_1 = file.listFiles(); //遍历写入list中 for (int i = 0; i < list_1.length; i++) { list.add(list_1[i].getName()); } //返回list return list; } /** * * 通过传入的文件名进行数据库的恢复 * 通过url的文件 和mysql的指令 进行操作 、 * @time:2015-11-22 下午03:54:54 * @param:@param url */ public void getRollBack(String url){ //读取文件 File file = new File( path + url); //流的声明 BufferedReader reader = null; OutputStream out = null; OutputStreamWriter write = null; try { //建立读取的文件流 通过utf-8的方式 reader = new BufferedReader( new InputStreamReader(new FileInputStream(file),"utf-8")); String inStr; StringBuffer sb = new StringBuffer(); //读取文件 while((inStr = reader.readLine()) != null){ sb.append(inStr+"\t\n"); } inStr = sb.toString(); //控制mysql的指令 Runtime rt = Runtime.getRuntime(); String cmd ="mysql -u"+ name +" -p"+password +" "+dataName; //执行指令 Process pro = rt.exec(cmd); //得到out的流 out = pro.getOutputStream(); write = new OutputStreamWriter(out,"utf-8"); //读入sql 文件的东西 write.write(inStr); write.flush(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ //关闭对象流 try { if(reader != null){ reader.close(); } if(out != null){ out.close(); } if(write != null){ write.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
主要就是对mysql 自己的数据库备份的操作,mysqldump 这个语法 要进行掌握。
相关文章推荐
- mysql innodb启动失败无法重启的处理方法
- mysql 中的时间类型的小总结
- MySql5.6 Window超详细安装教程
- MySQL zip格式安装
- MySql语句大全:创建、授权、查询、修改等
- MySQL 1130...is not allowed to connect to this MySql server
- mysql-5.6.28源码安装 整个安装过程详细教程,详解
- mysql
- MySQL的表分区详解
- MySQL操作命令及运算符
- mysql数据库导入导出
- mysql的存储过程,视图的创建
- 数据库 --> MySQL存储引擎介绍
- mysql 数据库问题com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
- 未能加载文件或程序集“MySql.Data, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖项
- MySQL查询一小时之内的数据
- windows环境下的mysql安装
- MySQL存储引擎--细说MyISAM与InnoDB区别
- mysql基础(三)
- 查看MySQL每个表占用的空间