zoukankan      html  css  js  c++  java
  • java 备份、还原postgresql数据库

    设计到几个方面:

    1、java 执行 linux 或windows命令

    2、数据库备份还原命令

    3、postgresql 备份还原命令 没有密码参数,目前仅程序与数据库在同一服务器上执行通过。

    import java.text.SimpleDateFormat;
    import java.util.Date;
     
    public class Test {
     
        public static void main(String[] args) {
            Date d = new Date(); // 备份文件名称
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            String filename = sdf.format(d) + ".tar";
     
            String dbname = "ipam";
            String username = "postgres";
            String dbpath = "d:\Program Files\PostgreSQL\9.1\bin\";
            String backuppath = "d:\" + filename;
     
    //        new Test().backupDB(dbname, username, backuppath, dbpath);
            backuppath = "d:\20120826095554.tar";
             new Test().restoreDB(dbname, username, backuppath, dbpath);
        }
     
        public boolean backupDB(String dbname, String username, String backuppath,
                String dbpath) {
            // 本地测试用
            // username = "postgres";
            // String dbpath = "d:\Program Files\PostgreSQL\9.1\bin\";
     
            boolean flag = true;// 备份是否成功
            Runtime rt = Runtime.getRuntime();// 得到jvm的运行环境
            Process process;
            StringBuffer cmdbuf = new StringBuffer();
            cmdbuf.append(dbpath);
            cmdbuf.append("pg_dump -U ");// 用户名
            cmdbuf.append(username);
            cmdbuf.append(" -f ");
            cmdbuf.append(backuppath);
            cmdbuf.append(" -E utf8 ");// 编码
            cmdbuf.append(" -Ft ");
            cmdbuf.append(dbname);
            try {
                // 调用 cmd:
                System.out.println(cmdbuf);
                process = rt.exec(cmdbuf.toString());
            } catch (Exception e) {
                flag = false;
                e.printStackTrace();
            }
            return flag;
        }
     
        public boolean restoreDB(String dbname, String username, String backuppath,
                String dbpath) {
     
            boolean flag = true;// 恢复是否成功
            Runtime rt = Runtime.getRuntime();// 得到jvm的运行环境
            Process process;
            StringBuffer cmdTemp = new StringBuffer();// 命令模版
            cmdTemp.append(dbpath);
            cmdTemp.append("pg_restore -U ");
            cmdTemp.append(username);
            cmdTemp.append(" -c -d ");
            cmdTemp.append(" " + dbname + " ");
            cmdTemp.append(backuppath);
            try {
                process = rt.exec(cmdTemp.toString());// 还原数据库
            } catch (Exception e) {
                flag = false;
                e.printStackTrace();
            }
            return flag;
        }
    }
    ————————————————
    版权声明:本文为CSDN博主「wangrusheng5200」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wangrusheng5200/article/details/84278521

  • 相关阅读:
    基于ffmpeg 直播推流和播放rtmp (IOS源码)
    Hadoop 安装指南
    机器学习算法( 七、AdaBoost元算法)
    机器学习算法( 五、Logistic回归算法)
    机器学习算法( 四、朴素贝叶斯算法)
    机器学习算法( 三、决策树)
    机器学习算法( 二、K
    Solr 多字段、打分规则、权重和实时索引同步
    Android Activity生命周期
    .net , java webSocket 连接 Socket.io (1.4.4版本) 问题
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/15078381.html
Copyright © 2011-2022 走看看