1、脚本实现
编写bat文件,使用windows定时任务定时执行还原。
bat文件如下:
@echo off
rem 转到mysql安装目录的bin文件夹
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
rem %date%为获取当前日期
mysql.exe -uroot -p111111 db_seal_sys_wh<D:\ftp\db_seal_sys_wh.sql
2、java代码实现
数据量太大时会内存溢出,可以增量备份后还原增量的二进制文件。
/**
* 还原数据库
* @return
*/
public static boolean importSql() {
try {
String fPath = "c:/test/data1.sql";
Runtime rt = Runtime.getRuntime();
// 调用 mysql 的 cmd:
Process child = rt.exec("C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysql -uroot -p111111 test ");
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fPath), "utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();
System.out.println("/* Load OK! */");
} catch (Exception e) {
e.printStackTrace();
}
return true;
}