急:jsp 备份和还原 mysql 数据库 请问大家,如何用jsp实现备份和还原mysql数据库,请给出代码实例,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MSSQL 的知道 MYSQL的不知道 MSSQL备份语句BACKUP DATABASE [数据库名称] TO DISK='存放路径文件名' WITH Format(完全备份)还原用 RESTORE DATABASE [数据库名称] FROM 期待答案ING mysqldump databasename >路径 及名字 恢复使用<Runtime runtime = Runtime.getRuntime();runtime.exec("mysqldump table > d:/20070308.bak")不知道可以吗? 我说的是用jsp,以web方式进行备份和还原。这些在Mysql里执行的命令,我都会,就是不知道如何写在程序里 Runtime runtime = Runtime.getRuntime();runtime.exec("mysqldump table > d:/20070308.bak")这不是程序吗????你看不明白吗服了 你用的是什么版本啊,eclipse报错 package com.wanghe.servlet;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.swing.JFileChooser;import javax.swing.UIManager;import javax.swing.filechooser.FileNameExtensionFilter;import com.wanghe.util.PropertiesValue;public class DatabaseServlet extends HttpServlet { String state; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { state = request.getParameter("state"); PrintWriter out = response.getWriter(); if (state.equals("backup")) { if (backup()) { out.print("true"); } else { out.print("false"); } out.close(); } else if (state.equals("load")) { if (load()) { out.print("true"); } else { out.print("false"); } out.close(); } } //mysql数据库备份 public static boolean backup() { InputStream in = null; InputStreamReader isr = null; BufferedReader br = null; FileOutputStream fout = null; OutputStreamWriter writer = null; try { Runtime rt = Runtime.getRuntime(); String mysql = "mysqldump -u " + PropertiesValue.DATABASE_USERNAME + " -p" + PropertiesValue.DATABASE_PASSWORD + " --set-charset=utf8 " + PropertiesValue.DATABASE; // 调用 mysql 的 cmd: Process child = rt.exec("cmd /c "+mysql);// 设置导出编码为utf8。这里必须是utf8 // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行 in = child.getInputStream();// 控制台的输出信息作为输入流 isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码 String inStr; StringBuffer sb = new StringBuffer(""); String outStr; // 组合控制台输出信息字符串 br = new BufferedReader(isr); while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } outStr = sb.toString(); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); JFileChooser f = new JFileChooser(); f.changeToParentDirectory(); f.setDialogTitle("请选择保存数据库备份的位置"); // 默认文件名 f.setSelectedFile(new File("wanghe.sql")); int state = f.showSaveDialog(null); if (state == JFileChooser.CANCEL_OPTION) { return false; } if (state == JFileChooser.APPROVE_OPTION) { String backupPath = f.getSelectedFile().getAbsolutePath(); // 要用来做导入用的sql目标文件: fout = new FileOutputStream(backupPath); writer = new OutputStreamWriter(fout, "utf8"); writer.write(outStr); // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 writer.flush(); return true; } } catch (Exception e) { e.printStackTrace(); } finally { // 别忘记关闭输入输出流 try { if (br != null) { br.close(); br = null; } if (in != null) { in.close(); in = null; } if (fout != null) { fout.close(); fout = null; } if (isr != null) { isr.close(); isr = null; } if (writer != null) { writer.close(); writer = null; } } catch (IOException e) { e.printStackTrace(); } } return false; } //mysql数据库还原 public static boolean load() { String strError = ""; OutputStream out = null; BufferedReader br = null; OutputStreamWriter writer = null; try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); String revertPath = null; JFileChooser fc = new JFileChooser(); fc.changeToParentDirectory(); fc.setDialogTitle("请选择数据库的备份文件"); FileNameExtensionFilter filter = new FileNameExtensionFilter( ".sql", ".bak", "bak", "BAK", ".BAK", "sql"); fc.setFileFilter(filter); int state = fc.showOpenDialog(null); if (state == JFileChooser.CANCEL_OPTION) { return false; } else if (state == JFileChooser.APPROVE_OPTION) { revertPath = fc.getSelectedFile().getAbsolutePath(); } Runtime rt = Runtime.getRuntime(); // 调用 mysql 的 cmd: Process child = rt.exec("cmd /c "+"mysql -u" + PropertiesValue.DATABASE_USERNAME + " -p" + PropertiesValue.DATABASE_PASSWORD + " " + PropertiesValue.DATABASE); out = child.getOutputStream();//控制台的输入信息作为输出流 String inStr; StringBuffer sb = new StringBuffer(""); String outStr; br = new BufferedReader(new InputStreamReader(new FileInputStream( revertPath), "utf8")); while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } outStr = sb.toString(); writer = new OutputStreamWriter(out, "utf8"); writer.write(outStr); // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 writer.flush(); strError = strError + "备份成功!<br>".getBytes("utf-8"); return true; } catch (Exception e) { e.printStackTrace(); strError = strError + "failure!<br>"; return false; } finally { try { if (out != null) { out.close(); out = null; } if (br != null) { br.close(); br = null; } if (writer != null) { writer.close(); writer = null; } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { backup(); }} stuts2 action错误 jsp和.net网站之间数据交换常用方法是哪些? 问大家一个bat(批处理)方面的问题 ,高手帮忙 session统计站点人数出错 如何在JSP页面获取打开页面计算机登录的用户名 请问asp和jsp能混合使用吗? int a = 0xf4240?这句话数值到底是多少?0xf是什么东西? 如何通过外网访问TomCat里的项目? 有没有便宜的jsp空间啊,有好的推荐一个啊 登陆是出错,请帮忙解决在线等待!(有原代码和错误信息,我找不出原因·) IE7.0的7.0.5730.11版本的页面iframe框架显示问题 如何让局域网其它机器访问我的JSP页面?
MSSQL备份语句
BACKUP DATABASE [数据库名称] TO DISK='存放路径文件名' WITH Format(完全备份)
还原用
RESTORE DATABASE [数据库名称] FROM
期待答案ING
Runtime runtime = Runtime.getRuntime();
runtime.exec("mysqldump table > d:/20070308.bak")
不知道可以吗?
runtime.exec("mysqldump table > d:/20070308.bak")
这不是程序吗????你看不明白吗服了
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;import com.wanghe.util.PropertiesValue;public class DatabaseServlet extends HttpServlet {
String state; protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
state = request.getParameter("state");
PrintWriter out = response.getWriter();
if (state.equals("backup")) { if (backup()) {
out.print("true");
} else {
out.print("false");
}
out.close();
} else if (state.equals("load")) {
if (load()) {
out.print("true");
} else {
out.print("false");
}
out.close();
}
} //mysql数据库备份
public static boolean backup() {
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
FileOutputStream fout = null;
OutputStreamWriter writer = null;
try {
Runtime rt = Runtime.getRuntime();
String mysql = "mysqldump -u " + PropertiesValue.DATABASE_USERNAME
+ " -p" + PropertiesValue.DATABASE_PASSWORD
+ " --set-charset=utf8 " + PropertiesValue.DATABASE;
// 调用 mysql 的 cmd:
Process child = rt.exec("cmd /c "+mysql);// 设置导出编码为utf8。这里必须是utf8
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
in = child.getInputStream();// 控制台的输出信息作为输入流
isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
br = new BufferedReader(isr);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFileChooser f = new JFileChooser();
f.changeToParentDirectory();
f.setDialogTitle("请选择保存数据库备份的位置");
// 默认文件名
f.setSelectedFile(new File("wanghe.sql"));
int state = f.showSaveDialog(null);
if (state == JFileChooser.CANCEL_OPTION) {
return false;
}
if (state == JFileChooser.APPROVE_OPTION) {
String backupPath = f.getSelectedFile().getAbsolutePath();
// 要用来做导入用的sql目标文件:
fout = new FileOutputStream(backupPath);
writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 别忘记关闭输入输出流
try {
if (br != null) {
br.close();
br = null;
} if (in != null) {
in.close();
in = null;
}
if (fout != null) {
fout.close();
fout = null;
}
if (isr != null) {
isr.close();
isr = null;
}
if (writer != null) {
writer.close();
writer = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return false; } //mysql数据库还原
public static boolean load() {
String strError = "";
OutputStream out = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
String revertPath = null;
JFileChooser fc = new JFileChooser();
fc.changeToParentDirectory();
fc.setDialogTitle("请选择数据库的备份文件");
FileNameExtensionFilter filter = new FileNameExtensionFilter(
".sql", ".bak", "bak", "BAK", ".BAK", "sql");
fc.setFileFilter(filter);
int state = fc.showOpenDialog(null);
if (state == JFileChooser.CANCEL_OPTION) {
return false;
} else if (state == JFileChooser.APPROVE_OPTION) {
revertPath = fc.getSelectedFile().getAbsolutePath();
}
Runtime rt = Runtime.getRuntime();
// 调用 mysql 的 cmd:
Process child = rt.exec("cmd /c "+"mysql -u"
+ PropertiesValue.DATABASE_USERNAME + " -p"
+ PropertiesValue.DATABASE_PASSWORD + " "
+ PropertiesValue.DATABASE);
out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
br = new BufferedReader(new InputStreamReader(new FileInputStream(
revertPath), "utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
strError = strError + "备份成功!<br>".getBytes("utf-8");
return true;
} catch (Exception e) {
e.printStackTrace();
strError = strError + "failure!<br>";
return false;
} finally {
try {
if (out != null) {
out.close();
out = null;
}
if (br != null) {
br.close();
br = null;
}
if (writer != null) {
writer.close();
writer = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
backup();
}
}