阿奇在努力。 2022-09-29 18:25 采纳率: 16.7%
浏览 80
已结题

用java代码如何备份postgreSQL数据库

用java代码如何备份postgreSQL数据库,正常在cmd里面输入第二行会有输入密码的提示,如果写在代码里,如何一行命令行命令能解决呢?

img

img

img

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-29 19:16
    关注
    评论
  • 游一游走一走 2022-09-29 20:02
    关注
    public void backupPGSQL(){
      try{
        Runtime r =Runtime.getRuntime();
        //Path to the place we store our backup
        String rutaCT = "C:\\BAKCUPS\\";
        //PostgreSQL variables
        String IP = "192.168.1.1";
        String user = "postgres";
        String dbase = "yourDataBase";
        String password = "yourPassword";
        Process p;
        ProcessBuilder pb;
        InputStreamReader reader;
        BufferedReader buf_reader;
        String line;
        //We build a string with today's date (This will be the backup's filename)
        java.util.TimeZone zonah = java.util.TimeZone.getTimeZone("GMT+1");
        java.util.Calendar Calendario = java.util.GregorianCalendar.getInstance( zonah, new java.util.Locale("es"));
        java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyyMMdd");
        StringBuffer date = new StringBuffer();
        date.append(df.format(Calendario.getTime()));
        java.io.File file = new java.io.File(rutaCT);
        // We test if the path to our programs exists
        if (file.exists()) {
          // We then test if the file we're going to generate exist too. If so we will delete it
          StringBuffer fechafile = new StringBuffer();
          fechafile.append(rutaCT);
          fechafile.append(date.toString());
          fechafile.append(".backup");
          java.io.File ficherofile = new java.io.File(fechafile.toString());
          if (ficherofile.exists()) {
            ficherofile.delete();
          }
          r = Runtime.getRuntime();
          pb = new ProcessBuilder(rutaCT + "pg_dump.exe", "-f", fechafile.toString(),
              "-F", "c", "-Z", "9", "-v", "-o", "-h",IP, "-U", user, dbase);
          pb.environment().put("PGPASSWORD", password);
          pb.redirectErrorStream(true);
          p = pb.start();
          try {
            InputStream is = p.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String ll;
            while ((ll = br.readLine()) != null) {
              System.out.println(ll);
            }
          } catch (IOException e) {
            log("ERROR "+e.getMessage(), e);
          }
        }
      } catch(IOException x) {
        System.err.println("Could not invoke browser, command=");
        System.err.println("Caught: " + x.getMessage());
      }
    }
    
    评论
  • print_out 2022-09-30 16:07
    关注

    直接使用jdbc连接数据库,用户名,密码都可以写在代码里,然后再postgres中自定义一个备份存储过程,使用java代码调用存储过程就可以了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月4日
  • 赞助了问题酬金15元 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥15 编译arm板子的gcc
  • ¥20 C语言用栈实现无向图邻接矩阵广度优先遍历
  • ¥15 C++代码报错问题,c++20协程
  • ¥15 c++图Djikstra算法求最短路径
  • ¥15 Linux操作系统中的,管道通信问题
  • ¥15 ansible tower 卡住
  • ¥15 等间距平面螺旋天线方程式
  • ¥15 通过链接访问,显示514或不是私密连接
  • ¥100 系统自动弹窗,键盘一接上就会
  • ¥50 股票交易系统设计(sql语言)