java写的MySQL数据库备份和恢复代码:

1.MySQL数据库备份和恢复,java代码实现:详情见下面:

package com.spring.util;

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;

//MYSQL数据库备份
public class MySQLDump {

//备份数据库
public static boolean sqlDump(String cmd,String filePath){
boolean falg = false;
try {
Runtime run = Runtime.getRuntime();
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();
Process child = rt.exec(cmd);
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
//输入流
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sqlPath),"utf-8"));
//输出流
OutputStreamWriter writer = new OutputStreamWriter(out,"utf-8");
String inStr;
while((inStr = br.readLine()) != null){
writer.write(inStr);
writer.write("\n\r");
}
writer.flush();
//别忘记关闭输出流
out.close();
br.close();
writer.close();
System.out.println("/* Load SQL File "+sqlPath+" OK!*/");
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args){
//备份数据库
sqlDump("C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump -uroot -proot itcastoa", "d:/itcastOA.sql");
//恢复数据库
sqlLoad("C:/Program Files/MySQL/MySQL Server 5.5/bin/mysql.exe -uroot -proot itcastoa", "d:/itcastOA.sql");
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode541. 反转字符串 II(字符串一律用py秒杀)

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样…

leetcode628. 三个数的最大乘积(简单,我觉得你不会)

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入:nums [1,2,3] 输出:6 示例 2: 输入:nums [1,2,3,4] 输出:24 示例 3: …

leetcode453. 最小操作次数使数组元素相等(贼难的简单题)

给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。 示例: 输入: [1,2,3] 输出: 3 解释: 只需要3次操作(注意每次操作会增加两个元素的值&am…

leetcode设计链表,非常工整的实现你值得拥有

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所…

leetcode1669. 合并两个链表

给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你返回结果链表的头指针。 示例 1&#xff…

leetcode1721. 交换链表中的节点

给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[1,4,3,2,5] 示例 2&…

《一天聊一个设计模式》 单例

我是兔兔rabbit,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点。 Class Diagram 使用一个私有构造函数、一…

Eclipse如何卸载插件

Help ---> About Eclipse -->Installation details--->选中你的插件-->Uninstall..

leetcode1502. 判断能否形成等差数列(小学生难度)

给你一个数字数组 arr 。 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。 示例 1: 输入&#x…

leetcode1528. 重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1: 输入:s "codeleet", indices [4,5,6,7,0,2,1,3] 输出…

leetcode976. 三角形的最大周长(又是你得不到的简单题)

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。 如果不能形成任何面积不为零的三角形,返回 0。 示例 1: 输入:[2,1,2] 输出:5 示例 2&…

《一天聊一个设计模式》备忘录

备忘录(Memento) Intent 在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。 Class Diagram Originator:原始对象Caretaker:负责保存好备忘录Memento:备忘录,…

《一天聊一个设计模式》 策略

9. 策略(Strategy) Intent 定义一系列算法,封装每个算法,并使它们可以互换。 策略模式可以让算法独立于使用它的客户端。 Class Diagram Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。Context 是…

如何在eclipse jee中创建Maven project并且转换为Dynamic web project

转自:http://www.javaniu.com/maven-jee-dynamic-web-project.htm 注意:该文档只针对以下eclipse版本,如图 一.在eclipse的官方站点下载eclipse jee版本,地址http://www.eclipse.org/downloads/download.php?file/technology/epp/downloads/release/ind…

《一天聊一个设计模式》 抽象工厂

4. 抽象工厂(Abstract Factory) Intent 提供一个接口,用于创建 相关的对象家族 。 Class Diagram 抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起…

leetcode1047. 删除字符串中的所有相邻重复项(栈的日常应用)

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入&#xf…

算法题的输入大总结

赶紧收藏吧,小白必备知识了 本文以求和为例 多组输入,每组输入共一行,包括两个整数A, B Sample Input 1 2 12 24 400 500 Sample Output 3 36 900 import java.util.Scanner; public class Main {public static void main(String[] args) …

精华Java问题总结

当时在网上汇总了不知多少面试和基础题,弄了个精华总结。 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类…

复习Java的精华总结

小白和老手都应该看看的总结 输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法: Scanner s new Scanner(System.in); 使用方法如下: //对应类型用对应的方法接…

必须知道的python专属骚技巧25例

本文我总结了25个python专属骚操作,实属提高效率/同事吹牛只利器,确定不收藏吗? 一、原地交换 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法 x, y 10, 20 print(x, y)x, y y, x print(x, y)#1 (10…