数据库的备份 与还原

进行之前,你需要确定,你真的配置好了数据库的环境变量,我这里用的是mysql

path:

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;D:\java\mysql-5.7\bin;%MAVEN_HOME%\bin;%MYSQL_HOME%

 public static void backupOne() {  
               try {
                    Runtime rt = Runtime.getRuntime();
        
                    // 调用 调用mysql的安装目录的命令
                    Process child = rt
                            .exec("mysqldump -h  127.0.0.1 -uroot -p123456 ssss");
                    // 设置导出编码为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目标文件:
                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                      String data = df.format( new  Date());
                    FileOutputStream fout = new FileOutputStream("d:\\dataBase.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();
                }
        
    }


数据库还原方法

public static void restore() {
        //这里改成自己的
        String databaseName ="ssss";
        
        
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime
                    .exec("D:\\java\\mysql\\bin\\mysql.exe -h localhost -uroot -p123456 --default-character-set=utf8 "
                            + databaseName);
            OutputStream outputStream = process.getOutputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    new FileInputStream("d:\\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();
            System.out.println("已经备份完毕");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

运行就行。

参考:https://blog.csdn.net/enweitech/article/details/51612858 

还有很多没看懂。。。。。。。





猜你喜欢

转载自blog.csdn.net/qq_39387571/article/details/80052324