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();
         }
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java_才怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值