在我们的应用程序中,我们实现了从代码中触发的自动DB迁移。现在,我们希望在进行任何迁移之前备份现有的DB。
有人能解释如何通过JDBC从Java代码中完全备份Postgresql吗?
更新:它不能通过JDBC.运行。
下面是一些对弗兰克海肯斯响应的工作代码
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();
}发布于 2010-09-28 06:59:24
你为什么不使用转储
发布于 2011-01-27 08:48:14
Postgresql库现在支持批量COPY操作。请参阅http://jdbc.postgresql.org/documentation/publicapi/index.html?org/postgresql/copy/CopyManager.html
要备份数据库,您需要从数据库到流进行CopyOut,然后反转进程,使用CopyIn进行恢复。
发布于 2010-09-28 06:44:38
我使用DbUnit从我的java应用程序中备份数据库:
DbUnit具有将数据库数据导出和导入到XML数据集和从XML数据集导入数据库数据的能力。从2.0版开始,DbUnit也可以在流模式中使用非常大的数据集。
https://stackoverflow.com/questions/3810288
复制相似问题