首先,设置mysql的环境变量(在path中添加%MYSQL_HOME%/bin),重启电脑。
完整代码:
    /**
     * @param args
     */
    public static void main(String[] args) {
        /*
         * 备份和导入是一个互逆的过程。
         * 备份:程序调用mysql的备份命令,读出控制台输入流信息,写入.sql文件;
         * 导入:程序调用mysql的导入命令,把从.sql文件中读出的信息写入控制台的输出流
         * 注意:此时定向符">"和"<"是不能用的
         */
        backup();
        load();
    }

/**
     * 备份检验一个sql文件是否可以做导入文件用的一个判断方法:把该sql文件分别用记事本和ultra
     * edit打开,如果看到的中文均正常没有乱码,则可以用来做导入的源文件(不管sql文件的编码格式如何,也不管db的编码格式如何)
     */
    public static void backup() {
        try {
            Runtime rt = Runtime.getRuntime();

// 调用 mysql 的 cmd:
            Process child = rt
                    .exec("mysqldump -u root --set-charset=utf8 bjse act_obj");// 设置导出编码为utf8。这里必须是utf8
          
            // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
            InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
                      
            InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
          
            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(
                    "e:/mysql-5.0.27-win32/bin/bjse22.sql");
            OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
            writer.write(outStr);
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
            writer.flush();

// 别忘记关闭输入输出流
            in.close();
            xx.close();
            br.close();
            writer.close();
            fout.close();

System.out.println("/* Output OK! */");

} catch (Exception e) {
            e.printStackTrace();
        }

}

/**
     * 导入
     *
     */
    public static void load() {
        try {
            String fPath = "e:/mysql-5.0.27-win32/bin/bjse22.sql";
            Runtime rt = Runtime.getRuntime();

// 调用 mysql 的 cmd:
            Process child = rt.exec("mysql -u root bjse ");
            OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
            String inStr;
            StringBuffer sb = new StringBuffer("");
            String outStr;
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    new FileInputStream(fPath), "utf8"));
            while ((inStr = br.readLine()) != null) {
                sb.append(inStr + "/r/n");
            }
            outStr = sb.toString();

OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
            writer.write(outStr);
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
            writer.flush();
            // 别忘记关闭输入输出流
            out.close();
            br.close();
            writer.close();

System.out.println("/* Load OK! */");

} catch (Exception e) {
            e.printStackTrace();
        }

}

java中数据库的备份与还原相关推荐

  1. Java对MySql数据库进行备份与还原

    数据库的备份与还原对项目而言是无疑是对安全考虑的好方法,MySQL 数据库备份原理: Navicat等数据库界面软件通用的数据库备份原理就是直接调用MYSQL本身的系统命令. 那么Java是如何来实现 ...

  2. java day27【DQL:查询语句、约束 、多表之间的关系 、范式 、数据库的备份和还原】...

    第一章  DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的. ...

  3. DQL查询语句约束数据库设计备份和还原

    DQL:查询语句 1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的.* DESC:降序 ...

  4. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  5. SQL2008数据库的备份与还原

    一.上期小编分享了SQL2000数据库的备份与还原,这期小编再来分享下SQL2008数据库的备份与还原. 二.SQL2008数据库的备份 1.登录sql server management studi ...

  6. 达梦数据库之备份与还原

    备份与还原是DBA必备的技能之一,为防止数据的误操作.误删除等突发情况,所以备份还原至关重要,一下从几方面共同学习一下达梦数据库的备份与还原基础知识. 一.概述 达梦数据库的备份还原方式:物理备份还原 ...

  7. 多表关系、数据库设计的范式、数据库的备份和还原、多表查询、事务、DCL(了解)

    文章目录 多表关系 数据库设计的范式 数据库的备份和还原 多表查询 多表查询的分类:内连接查询 隐式内连接:使用where条件消除无用数据 显式内连接 多表查询的分类:外连接查询 左外连接 右外连接 ...

  8. Mysql-DQL语句,数据库的备份和还原,数据库的约束(笔记)

    目录 DQL语句其他语法:分组group by ,筛选having, 分页查询limit以及分页查询使用场景 1.DQL语句之分组查询:group by 2.DQL语句之筛选查询 having 3.分 ...

  9. Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题

    MySQL 数据库的备份与还原 第一章:数据库的导入与导出 ① 数据库的导出 ② 大数据量下 mysqldump 的导出优化 ③ 数据库的导出 第一章:数据库的导入与导出 ① 数据库的导出 需要用到 ...

最新文章

  1. Windows Server 2008 R2 之十七WDS(部署服务)之一
  2. python编译为机器码_Python FAQ2-python代码编译问题
  3. java selenium (二) 环境搭建方法一
  4. 怎么修改x轴_Origin绘图:共X轴Stack绘制分波态密度与绘图中的科学构思
  5. 返回一个整数数组中最大子数组的和---环形数组
  6. ARM 指令集版本和ARM 版本
  7. TCP/IP指南(RFC1180)
  8. python出现syntaxerror_python 报错syntaxerror怎么解决
  9. 第50篇-企查查请求头参数分析【2022-09-29】
  10. 个人支付方案(免签约)-支付宝当面付
  11. 大文件上传NeatUpload简单用法 (转)
  12. Powerbuilder历程
  13. Java小农养成记第二天
  14. PAT乙级1005,用C语言进行编程,继续卡拉兹猜想
  15. php页面导入excel表格,php页面导入excel表格数据:php导入excel 怎么获取excel表格数据...
  16. python 爬取中国邮政编码
  17. Mac 登录ssh服务器
  18. C语言一个简单的商店管理系统
  19. 1346:【例4-7】亲戚(relation)
  20. Bezier贝塞尔曲线

热门文章

  1. c语言dfp算法程序,拟牛顿法中的DFP算法和BFGS算法
  2. 基于JavaWeb的社团信息管理系统
  3. 本人的QQ群:有来的可以加。
  4. pr如何导入.mogrt文件 pr模板导入教程
  5. Msc.Marc案例2:戴帽圆柱球壳
  6. postgresql-用户登录数据库
  7. 1.0E-08=0.000000001
  8. 哥斯拉v4.0流量解密
  9. wordpress 不用插件添加友情链接
  10. html5视频优化,HTML5 视频秒开优化