跪求用java实现在linux环境下备份mysql数据库

jackjboss 2010-04-13 05:07:24
怎么实现用java在linux下备份和还原mysql数据库!
...全文
250 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chance87 2010-04-19
  • 打赏
  • 举报
回复
发个详细点的吧:

备份:

public static void backup() {
try {
Runtime rt = Runtime.getRuntime();

Process child = rt.exec("mysqldump -u用户名 -p密码 -R -c --set-charset=utf8 数据库名");

InputStream in = child.getInputStream();

InputStreamReader xx = new InputStreamReader(in, "utf8");

String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;

BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();


FileOutputStream fout = new FileOutputStream("备份的文件路径名");
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
writer.flush();

in.close();
xx.close();
br.close();
writer.close();
fout.close();
} catch (Exception e) {
e.printStackTrace();
}

}

还原:
public static void load() {
try {
String fPath = "备份的文件路径名";
Runtime rt = Runtime.getRuntime();

Process child = rt.exec("mysql -u用户名 -p密码 数据库名");
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);
writer.flush();

out.close();
br.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
chance87 2010-04-13
  • 打赏
  • 举报
回复
跟操作系统没什么关系,要说有什么不一样,就备份路径不一样

备份:

public int backUp() {

int exitVal = -1;
String mysqldump= "mysqldump -u username -p psw -R -c database>备份文件路径(如:/my/back.sql)";

Runtime rt = Runtime.getRuntime();
Process proc;
try {
proc = rt.exec(mysqldump);
exitVal = proc.waitFor();// 成功返回0,失败返回-1
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return exitVal;
}

这样你就把数据库脚本导出来了(对于mysqldump命令你如果不熟悉,网上资料一在堆,这里就不多说了)

villagehead 2010-04-13
  • 打赏
  • 举报
回复
俺只会:
备份:先select出来,再写到csv或者xml文件中。
反之亦然

等待学习更好的办法

good luck

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧