实现数据库备份与还原
有一个坑,那就是空格问题:-p密码 这个是紧紧靠在一起的,不能分开,否则会将密码当作一个数据库的名称
mysqldump空格-uroot空格-p123456空格erudition > D:/ddd.sql"
我的数据库是存在密码的,所以上面的cmd命令只适用于存在密码的数据库使用
// 数据库备份(-u账号 -p密码 数据库名 > sql文件【给出路径以及文件名后缀即可,文件会自动生成,但是路径需要自己创建】)
Runtime.getRuntime().exec("cmd.exe /c mysqldump -uroot -p123456 erudition > D:/ddd.sql");
// 数据库还原(-u账号 -p密码 数据库名 < sql文件【本地文件的地址】)
Runtime.getRuntime().exec("cmd.exe /c mysql -uroot -p123456 erudition < D:/ddd.sql");
打开网页
网址随意输入,不过浏览器使用的就是win10系统默认的浏览器了
Runtime.getRuntime().exec("cmd.exe /c www.baidu.com");
打开应用(计算器、……)
加不加后缀都无所谓,反正都能实现,想正规一点可以加上后缀
Runtime.getRuntime().exec("cmd.exe /c calc");
Runtime.getRuntime().exec("cmd.exe /c calc.exe");
Runtime.getRuntime().exec("cmd.exe /c 应用名");
Runtime.getRuntime().exec("cmd.exe /c 应用名.exe");
请看源代码
一个工具类CmdUtil,一个控制层ExeController,一个http请求。
public class CmdUtil {
public static void cmd(String cmd) throws IOException {
Runtime runtime = Runtime.getRuntime();
runtime.exec(cmd);
}
}
@RestController
public class ExeController {
@RequestMapping("/calc")
public static void calc() throws IOException {
// 计算器
String cmd = "calc"; // 不加后缀名
String cmd2 = "calc.exe"; // 加后缀名
CmdUtil.cmd(cmd);
CmdUtil.cmd(cmd2);
}
@RequestMapping("/back")
public static void back() throws IOException {
// 数据库备份
String back = "mysqldump -uroot -p123456 erudition > D:/ddd.sql";
CmdUtil.cmd(back);
}
@RequestMapping("/recover")
public static void recover() throws IOException {
// 数据库还原
String recover = "mysql -uroot -p123456 erudition < D:/ddd.sql";
CmdUtil.cmd(recover);
}
}
### 打开计算器(应用)
POST http://localhost:8080/calc
### 数据库备份
POST http://localhost:8080/back
### 数据库还原
POST http://localhost:8080/recover
至于打开网址,前端一行代码的事情,没必要让后台来处理。
window.open("网址全称");
window.open("http://www.baidu.com");