java备还原mysql_使用java控制mysql数据库的备份以及还原

原理:本方法主要是使用cmd执行mysqldump这个转储数据库程序,当然有很多工具可以利用,这个只是最基础的方法

备份

备份所使用的主要是

eg:mysqldump -hhostname -uusername -ppassword databasename >db.sql

这个mysql语句,就能完全实现文件的备份.

具体在代码中体现:

/**

* 备份mysql数据库

*

* @param root

* mysql登录名

* @param rootPass

* 登录密码

* @param dbName

* 要备份的数据库名称

* @param backupsPath

* 备份的路径

* @param backupsSqlFileName

* 备份文件的名字

* @return

* @param tableName 这里实现了只备份某一张表或多张表

*这里使用了不确定参数

*备份mysql数据库的命令 mysqldump -hhostname -uusername -ppassword

* databasename > backupfile.sql

*/

public static String dbBackUp(String root, String rootPass, String dbName, String backupsPath,

String backupsSqlFileName, String... tableName) {

// 生成备份文件

String pathSql = backupsPath + backupsSqlFileName;

try {

File fileSql = new File(pathSql);

if (!fileSql.exists()) {

fileSql.createNewFile();

}

String mysql = "mysqldump -u" + root + " -p" + rootPass + " " + dbName + " ";

for (String string : tableName) {

mysql = mysql + string + " ";

}

mysql = mysql + " --default-character-set=utf8 ";

System.out.println(mysql);

System.out.println("cmd命令为:——>>>" + mysql);

Runtime runtime = Runtime.getRuntime();

Process child = runtime.exec(mysql);

// 读取备份数据并生成文件

InputStream in = child.getInputStream();

OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(pathSql), "utf8");

BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf8"));

String line = reader.readLine();

while (line != null) {

writer.write(line + "\n");

line = reader.readLine();

}

writer.flush();

System.out.println("数据库已备份到——>>" + pathSql);

} catch (Exception e) {

System.out.println("生成m=mysql文件失败");

}

return pathSql;

}

还原

还原所使用的主要是:

//具体的含义就是执行db.sql这个文件

eg:mysql -hhostname -uusername -ppassword databasename < db.sql

具体代码体现:

public static boolean load(String root, String rootPass, String dbName, String fPath) {

try {

Runtime rt = Runtime.getRuntime();

System.out.println("还原");

// 调用 mysql 的 cmd:

String mysql = "mysql -u" + root + " -p" + rootPass + " " + dbName;

Process child = rt.exec("cmd /c " + mysql);

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("还原成功");

} catch (Exception e) {

System.out.println("还原失败");

e.printStackTrace();

}

return true;

}

经测试,可用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值