基于java的MySql的备份与恢复功能(一)

本文介绍了一种使用Java实现的数据库文件备份方法,通过调用MySQL的命令行工具mysqldump来完成数据库的备份,并详细解释了如何设置编码、读取控制台输出以及将输出写入.sql文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做的一个项目需要用的对数据库文件的备份与恢复功能,代码如下

数据库文件备份

private boolean backup(String fileName) {

        boolean flag = false;
        try {
            Runtime rt = Runtime.getRuntime();
            // 调用 调用mysql的安装目录的命令
            Process child = rt.exec(MYSQLURL1+SQLNAME);
            // 设置导出编码为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();
            //如果文件夹不存在,则创建文件夹
            File file = new File(fileName); 
            if(!file.exists() && !file.isDirectory()){
                file.mkdirs();
            }
            // 要用来做导入用的sql目标文件:
            FileOutputStream fout = new FileOutputStream(fileName+SQLNAME+".sql");
            OutputStreamWriter writer = new OutputStreamWriter(fout, "utf-8");
            writer.write(outStr);
            writer.flush();
            in.close();
            xx.close();
            br.close();
            writer.close();
            fout.close();
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

其中,MYSQLURL1和SQLNAME 分别为mysql安装位置和数据库的名字。

private static final String MYSQLURL1 = "C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump -h localhost -uroot -p123456 ";

注意:
mkdir()创建此抽象路径名称指定的目录(及只能创建一级的目录,且需要存在父目录)
mkdirs()创建此抽象路径指定的目录,包括所有必须但不存在的父目录。(及可以创建多级目录,无论是否存在父目录)

下一篇将介绍数据库文件的恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值