您的位置:首页 > 数据库 > MySQL

mysql还原sql文件到数据库

2017-03-29 11:28 232 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 还原