代码如下:
package util.dbak;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 java.io.UnsupportedEncodingException;
public class DatabaseBackup {
private String mysqlBinPath;
private String username;
private String password;
public String getMysqlBinPath() {
return mysqlBinPath;
}
public void setMysqlBinPath(String mysqlBinPath) {
this.mysqlBinPath =
mysqlBinPath;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username =
username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password =
password;
}
public DatabaseBackup() {
super();
}
public DatabaseBackup(String mysqlBinPath, String username,
String password) {
super();
if
(!mysqlBinPath.endsWith(File.separator)) {
mysqlBinPath
= mysqlBinPath + File.separator;
}
this.mysqlBinPath =
mysqlBinPath;
this.username =
username;
this.password =
password;
}
public void backup(OutputStream output, String dbname) {
String command = "cmd /c " +
mysqlBinPath + "mysqldump -u" + username + " -p" + password + "
--set-charset=utf8 "
+ dbname;
System.out.println(command);
PrintWriter p = null;
BufferedReader reader =
null;
try {
p = new
PrintWriter(new OutputStreamWriter(output, "utf8"));
Process
process = Runtime.getRuntime().exec(command);
InputStreamReader inputStreamReader = new
InputStreamReader(process.getInputStream(), "utf8");
reader = new
BufferedReader(inputStreamReader);
String line
= null;
while ((line
= reader.readLine()) != null) {
p.println(line);
}
p.flush();
} catch
(UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
if (p != null) {
p.close();
}
} catch
(IOException e) {
e.printStackTrace();
}
}
}
public void backup(String dest, String dbname) {
try {
OutputStream
out = new FileOutputStream(dest);
backup(out,
dbname);
} catch (FileNotFoundException
e) {
e.printStackTrace();
}
}
public void restore(InputStream input, String dbname) {
String command = "cmd /c " +
mysqlBinPath + "mysql -u" + username + " -p" + password + " " +
dbname;
try {
Process
process = Runtime.getRuntime().exec(command);
OutputStream
out = process.getOutputStream();
String line
= null;
String
outStr = null;
StringBuffer
sb = new StringBuffer("");
BufferedReader br = new BufferedReader(new InputStreamReader(input,
"utf8"));
while ((line
= br.readLine()) != null) {
sb.append(line + "\r\n");
}
outStr =
sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out,
"utf8");
writer.write(outStr);
writer.flush();
out.close();
br.close();
writer.close();
} catch
(UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
public void restore(String dest, String dbname) {
try {
InputStream
input = new FileInputStream(dest);
restore(input, dbname);
} catch (FileNotFoundException
e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DatabaseBackup bak = new
DatabaseBackup("C:/MySQL/UTF8/bin", "root", "root");
bak.restore("c:/t.sql",
"ttk");
}
}
tags:java,mysql,database,数据库,备份,恢复,mysql命令