首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过JDBC从Postgresql备份?

如何通过JDBC从Postgresql备份?
EN

Stack Overflow用户
提问于 2010-09-28 06:42:00
回答 3查看 11.5K关注 0票数 6

在我们的应用程序中,我们实现了从代码中触发的自动DB迁移。现在,我们希望在进行任何迁移之前备份现有的DB。

有人能解释如何通过JDBC从Java代码中完全备份Postgresql吗?

更新:它不能通过JDBC.运行。

下面是一些对弗兰克海肯斯响应的工作代码

代码语言:javascript
复制
    final List<String> baseCmds = new ArrayList<String>();
    baseCmds.add("/usr/bin/pg_dump");
    baseCmds.add("-h");
    baseCmds.add("hostname");
    baseCmds.add("-p");
    baseCmds.add("5432");
    baseCmds.add("-U");
    baseCmds.add("username");
    baseCmds.add("-b");
    baseCmds.add("-v");
    baseCmds.add("-f");
    baseCmds.add("/path/to/backup.sql");
    baseCmds.add("dbName");
    final ProcessBuilder pb = new ProcessBuilder(baseCmds);

    // Set the password
    final Map<String, String> env = pb.environment();
    env.put("PGPASSWORD", "password");

    try {
        final Process process = pb.start();

        final BufferedReader r = new BufferedReader(
                  new InputStreamReader(process.getErrorStream()));
        String line = r.readLine();
        while (line != null) {
            System.err.println(line);
            line = r.readLine();
        }
        r.close();

        final int dcertExitCode = process.waitFor();

     } catch (IOException e) {
        e.printStackTrace();
     } catch (InterruptedException ie) {
        ie.printStackTrace();
     }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-28 06:59:24

你为什么不使用转储

票数 7
EN

Stack Overflow用户

发布于 2011-01-27 08:48:14

Postgresql库现在支持批量COPY操作。请参阅http://jdbc.postgresql.org/documentation/publicapi/index.html?org/postgresql/copy/CopyManager.html

要备份数据库,您需要从数据库到流进行CopyOut,然后反转进程,使用CopyIn进行恢复。

票数 5
EN

Stack Overflow用户

发布于 2010-09-28 06:44:38

我使用DbUnit从我的java应用程序中备份数据库:

DbUnit具有将数据库数据导出和导入到XML数据集和从XML数据集导入数据库数据的能力。从2.0版开始,DbUnit也可以在流模式中使用非常大的数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3810288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档