java实现mysql数据库的备份及还原

备份:

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();
         }
     }

猜你喜欢

转载自blog.csdn.net/java_12138/article/details/81066009