java实现mysql数据库的备份及还原
2023-09-27 14:21:59 时间
备份:
public static void backup() { try { Runtime rt = Runtime.getRuntime(); // 调用 调用mysql的安装目录的命令 Process child = rt .exec("e:\\MySQL\\bin\\mysqldump -h localhost -uroot -p123 db_name"); // 设置导出编码为utf-8。这里必须是utf-8 // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行 InputStream in = child.getInputStream();// 控制台的输出信息作为输入流 InputStreamReader xx = new InputStreamReader(in, "utf-8"); // 设置输出流编码为utf-8。这里必须是utf-8,否则从流中读入的是乱码 String inStr; StringBuffer sb = new StringBuffer(""); String outStr; // 组合控制台输出信息字符串 BufferedReader br = new BufferedReader(xx); while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } outStr = sb.toString(); // 要用来做导入用的sql目标文件: FileOutputStream fout = new FileOutputStream("c:\\test.sql"); OutputStreamWriter writer = new OutputStreamWriter(fout, "utf-8"); writer.write(outStr); writer.flush(); in.close(); xx.close(); br.close(); writer.close(); fout.close(); System.out.println(""); } catch (Exception e) { e.printStackTrace(); } }
还原:
public static void restore(String databaseName) { try { Runtime runtime = Runtime.getRuntime(); Process process = runtime .exec("e:\\MySQL\\bin\\mysql.exe -hlocalhost -uroot -p123 --default-character-set=utf8 " + databaseName); OutputStream outputStream = process.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream("C:\\test.sql"), "utf-8")); String str = null; StringBuffer sb = new StringBuffer(); while ((str = br.readLine()) != null) { sb.append(str + "\r\n"); } str = sb.toString(); // System.out.println(str); OutputStreamWriter writer = new OutputStreamWriter(outputStream, "utf-8"); writer.write(str); writer.flush(); outputStream.close(); br.close(); writer.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
相关文章
- MySQL数据库与Redis缓存双写一致性
- MySQL实现简单排名
- 【Java】Spring boot、Mysql项目部署到Linux中后启动日志慢8小时(时区不对/时区错误)
- mysql数据库备份--java代码
- 基于Java Web + MySQL实现的(Web)网上订餐系统【100010670】
- 基于Java+MySQL实现新闻发布系统【100010497】
- 基于Java+MySQL实现(Web)高校资源综合发布系统【100010343】
- 基于Java(Spring boot+Hibernate)+VUE+MySQL实现(Web)员工信息管理系统【100010234】
- 基于Java+MySQL 实现(Web)网络考试系统【100010215】
- 基于Java+MySQL实现(Web)师生健康码管理系统【100010204】
- 基于Java(SSM)+MySQL实现个人博客网站【100010083】
- 基于Java+MySQL实现(Web)企业仓库存储管理系统【100010160】
- 基于Java(Struts2 + Hibernate + Spring)+MySQL实现的(Web)在线预约系统【100010156】
- 基于Java+MySQL实现(Web)在线题库管理系统【100010067】
- 基于Java+Mysql实现(WEB)宿舍管理系统【100010016】
- 基于Java+Mysql实现在线书店订购系统【100010003】
- Docker容器部署Mysql数据库服务器
- 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库
- 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题
- Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目
- Java 与 Mysql 时间相差八小时
- MySQL基础学习笔记
- mysql各个版本初始化区别
- 利用Java进行MySql数据库的导入和导出
- The total number of locks exceeds the lock table size,mysql update报错
- 图数数据库引擎tinkerpop(3) 使用java调用tinkerpop,存储到mysql数据库
- Java新手入门200例124之用JDBC连接Mysql数据库
- java c3p0连接数据库实例(mysql)完整实例
- Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动
- mysql-connector-java-8.0.12使用时报错