数据库备份 runtime.exec 去执行命令 返回 process 读取process的输入流 把数据写入执行文件里

runtime.exec 去执行命令  返回 process  读取process的输入流  把数据写入执行文件里


private static String userName = ReadConfig.getProperty("db.username");
    private static String password = ReadConfig.getProperty("db.password");
    private static String dbPath = ReadConfig.getProperty("db.path");
    private static String backUpPath = ReadConfig.getProperty("db.backUpPath");
    private static String dbName = ReadConfig.getProperty("db.Name");
    private static String dbHost = ReadConfig.getProperty("db.host");
    private static String separator = File.separator;
    
    /**
     * 备份
     * @param fileName
     * @return
     * @throws IOException
     */
    public static String backup(String fileName) throws IOException {
        String filePath = null;
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(dbPath + separator + "mysqldump -u"+userName + " -p" + password + " " + dbName );
            InputStream inputStream = process.getInputStream();//得到输入流,写成.sql文件
            InputStreamReader reader = new InputStreamReader(inputStream, "utf-8");
            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(backUpPath + fileName + ".sql" );
            file.getParentFile().mkdirs();
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(s.getBytes());
            fileOutputStream.close();
            br.close();
            reader.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return filePath;
    }
    
    
    /**
     * 还原
     * @param fileName
     * @throws IOException
     */
    public static void restore(String fileName) throws IOException {
        try {
            Runtime runtime = Runtime.getRuntime();
//            Process process = runtime.exec("C:\\Program Files\\MySQL\\MySQL Server 5.7\\bin\\mysql -u root -p123456 --default-character-set=utf8 huihangjinrong");
            Process process = runtime.exec(dbPath + separator + "mysql -u"+userName + " -p" + password + " --default-character-set=utf8 " + dbName );
            OutputStream outputStream = process.getOutputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(backUpPath + fileName + ".sql" )));
            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();            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }




package com.work.oa.sys.utils;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ReadConfig {

    static Properties properties = new Properties();
    static {
        try {
            String path = "/config.properties";
            properties.load(ReadConfig.class.getResourceAsStream(path));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public final static String getProperty(String key) {
        return properties.getProperty(key);
    }

}

db.path=C\:\\Program Files\\MySQL\\MySQL Server 5.5\\bin
db.username=root
db.password=123456
db.host=localhost
db.backUpPath=D\:\\backupDb\\
db.Name=workoass

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值