备份:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
public
static
void
backup() {
try
{
Runtime rt = Runtime.getRuntime();
// 调用 调用mysql的安装目录的命令
Process child = rt
.exec(
"e:\\MySQL\\bin\\mysqldump -h localhost -uroot -p123 db_name"
);
// 设置导出编码为utf-8。这里必须是utf-8
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();
// 控制台的输出信息作为输入流
InputStreamReader xx =
new
InputStreamReader(in,
"utf-8"
);
// 设置输出流编码为utf-8。这里必须是utf-8,否则从流中读入的是乱码
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();
// 要用来做导入用的sql目标文件:
FileOutputStream fout =
new
FileOutputStream(
"c:\\test.sql"
);
OutputStreamWriter writer =
new
OutputStreamWriter(fout,
"utf-8"
);
writer.write(outStr);
writer.flush();
in.close();
xx.close();
br.close();
writer.close();
fout.close();
System.out.println(
""
);
}
catch
(Exception e) {
e.printStackTrace();
}
}
|
还原:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public
static
void
restore(String databaseName) {
try
{
Runtime runtime = Runtime.getRuntime();
Process process = runtime
.exec(
"e:\\MySQL\\bin\\mysql.exe -hlocalhost -uroot -p123 --default-character-set=utf8 "
+ databaseName);
OutputStream outputStream = process.getOutputStream();
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(
new
FileInputStream(
"C:\\test.sql"
),
"utf-8"
));
String str =
null
;
StringBuffer sb =
new
StringBuffer();
while
((str = br.readLine()) !=
null
) {
sb.append(str +
"\r\n"
);
}
str = sb.toString();
// System.out.println(str);
OutputStreamWriter writer =
new
OutputStreamWriter(outputStream,
"utf-8"
);
writer.write(str);
writer.flush();
outputStream.close();
br.close();
writer.close();
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
catch
(FileNotFoundException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
}
|