MySQL数据库的备份与还原

参考文献:

https://www.cnblogs.com/kissdodog/p/4174421.html

package org.tonny.mysql;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

 

public class DbOperate {

/**

     * 数据库表备份

     *

     * @throws Exception

     */

    public static void tableBackup(String dbUser,String dbPass,String dbHost,String dbPort,String dbName,String savePath, String tableName)

            throws Exception {

 

        Runtime runtime = Runtime.getRuntime();

        // -u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字

        Process process = runtime.exec("mysqldump -h " + dbHost + " -P "

                + dbPort + " -u " + dbUser + " -p" + dbPass + " " + dbName

                + " " + tableName);

        InputStream inputStream = process.getInputStream();// 得到输入流,写成.sql文件

        InputStreamReader reader = new InputStreamReader(inputStream);

        BufferedReader br = new BufferedReader(reader);

        String s = null;

        StringBuffer sb = new StringBuffer();

        while ((s = br.readLine()) != null) {

            sb.append(s + "\r\n");

        }

        s = sb.toString();

        File file = new File(savePath);

        file.getParentFile().mkdirs();

        FileOutputStream fileOutputStream = new FileOutputStream(file);

        fileOutputStream.write(s.getBytes());

        fileOutputStream.close();

        br.close();

        reader.close();

        inputStream.close();

    }

 

    /**

     * 备份数据库

     *

     * @param savePath

     * @throws Exception

     */

    public static void dbBackup(String dbUser, String dbPass, String dbHost,

            String dbPort, String dbName, String savePath) throws Exception {

     String path="C://Program Files//MySQL//MySQL Server 5.7//bin";

        Runtime runtime = Runtime.getRuntime();

        // -u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字

        Process process = runtime.exec(path+"//mysqldump -h " + dbHost + " -P "

                + dbPort + " -u " + dbUser + " -p" + dbPass + " " + dbName);

        InputStream inputStream = process.getInputStream();// 得到输入流,写成.sql文件

        InputStreamReader reader = new InputStreamReader(inputStream);

        BufferedReader br = new BufferedReader(reader);

        String s = null;

        StringBuffer sb = new StringBuffer();

        while ((s = br.readLine()) != null) {

            sb.append(s + "\r\n");

        }

        s = sb.toString();

        File file = new File(savePath);

        file.getParentFile().mkdirs();

        FileOutputStream fileOutputStream = new FileOutputStream(file);

        fileOutputStream.write(s.getBytes());

        fileOutputStream.close();

        br.close();

        reader.close();

        inputStream.close();

    }

 

    /**

     * 执行sql文件

     *

     * @param savePath

     * @throws Exception

     */

    public static void dbRecover(String dbUser, String dbPass, String dbHost,

            String dbPort, String dbName, String savePath) throws Exception {

        // 获取操作数据库的相关属性

     String path="C://Program Files//MySQL//MySQL Server 5.7//bin";

        Runtime runtime = Runtime.getRuntime();

        Process process = runtime.exec(path+"//mysql -h" + dbHost + " -P " + dbPort

                + " -u " + dbUser + " -p" + dbPass

                + " --default-character-set=utf8 " + dbName);

        OutputStream outputStream = process.getOutputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(

                new FileInputStream(savePath)));

        String str = null;

        StringBuffer sb = new StringBuffer();

        while ((str = br.readLine()) != null) {

            sb.append(str + "\r\n");

        }

        str = sb.toString();

        OutputStreamWriter writer = new OutputStreamWriter(outputStream,

                "utf-8");

        writer.write(str);

        writer.flush();

        outputStream.close();

        br.close();

        writer.close();

    }

 

    public static void main(String[] args) {

//        try {

//            dbBackup("root", "158520", "localhost","3306", "mybatis", "D:/back.sql");

//            System.out.println("完成!");

//        } catch (Exception e) {

//            // TODO Auto-generated catch block

//            e.printStackTrace();

//        }

        try {

            dbRecover("root", "158520", "localhost","3306", "mybatis", "D:/back.sql");

            System.out.println("完成!");

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值