wie erstelle backup der postgres-Datenbank mit java
will ich nehmen backup postgres-Datenbank mit Hilfe von java. Ich benutze folgenden code für das
aber dies ist nicht arbeiten und nicht die Erzeugung von dump.
String pgDump = "C:\\Program Files\\PostgreSQL\\9.2\\bin\\pg_dump";
String dumpFile = "D:\\test\\"+ tenant.getTenantAsTemplate()+".sql";
String sql = pgDump+" -h localhost -U postgres -P postgres " + tenant.getTenantAsTemplate()+" > "+dumpFile;
Process p = Runtime.getRuntime().exec(sql);
int time = p.waitFor();
System.out.println("time is "+time);
if(time == 0){
System.out.println("backup is created");
}
else{
System.out.println("fail to create backup");
}
Hier bin ich immer der Zeit 1.
Dies ist auch Betriebssystem abhängig und wir müssen auch pg_dump. gibt es eine andere Möglichkeit zum erzeugen des backup-Datenbank ohne pg_dump?
Antworten Sie bitte bald.
stackoverflow.com/questions/15743529/... hat ein schönes Beispiel für das, was Sie wollen, und können leicht angepasst werden, um Ihre dump-Befehl.
Verwenden Sie cron - + - Skript. Nicht verwenden java - es ist das falsche Werkzeug.
Verwenden Sie cron - + - Skript. Nicht verwenden java - es ist das falsche Werkzeug.
InformationsquelleAutor kamal | 2014-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, es gibt keine Möglichkeit, generieren Sie ein Datenbank-backup ohne
pg_dump
mit der normalen SQL-Verbindung. Es ist ein bisschen ein FAQ, aber die Leute, die wollen, dass die Funktion nie einen Schritt, um die Arbeit zu implementieren des Features in PostgreSQL.Ich denke, technisch könnten Sie eine replikationsverbindung zu tun, eine physikalische Basis-backup wie
pg_basebackup
tut, aber das ist nicht wirklich das, was Sie wollen, erfordert das kopieren Sie alle Datenbanken auf der Maschine, und würde eine Menge Arbeit sein.Sollten Sie die
String[]
formRuntime.exec
als Ich erwähnte in einem ähnlichen Antwort in Bezug aufpg_restore
.Müssen Sie auch prüfen, den Prozess Ausfahrt Wert um zu sehen, ob es erfolgreich beendet werden kann oder nicht, und Sie müssen vorsichtig sein, zu behandeln, nicht nur schlucken, keine Ausnahmen geworfen.
Ihr code fehlschlägt, überprüfen Sie die exit-Wert, und ich glaube, es ' s wahrscheinlich generating einen fehlerhaften Befehl, der fehlschlägt, mit einem nicht-null exit-code, wahrscheinlich, weil Sie nicht korrekt zitieren, den Pfad zu
pg_dump
. Um zu sehen, was falsch ist, drucken Sie die endgültige Montage Kommandozeile, dann siehst du etwas wie:welche cmd.exe wird aufgeteilt in:
... etc
Sehen Sie das problem?
Tun nicht nur zitieren, den Pfad zu
pg_dump
um dies zu umgehen. Verwenden Sie dieString[]
formexec
und Sie nicht haben, um, plus es wird korrekt für andere Dinge wie versehentliches%environmentvars%
im Wege.OK, es ist also beenden mit einer Fehlermeldung. Haben Sie einen Blick auf das Kommando stdout/stderr-Ausgabe zu sehen, warum.
vielen Dank für Ihre Antwort. Dies ist eigentlich keine Angabe der Fehler und welches Verfahren Sie erzählte mir von String [] habe ich versucht, aber mit string-array i m nicht in der Lage zu erstellen dump der Datenbank, aber ich kann restore database mit, der erfolgreich. Die zur Erstellung von backup-und restore-Verfahren Verschieden sind oder gleich. sorry ich m Fragen, viele Fragen.
Müssen Sie Blick auf die stdout / stderr, um zu sehen, was der Befehl die Fehlermeldung. Finden Sie diese viel einfacher, wenn du ProcessBuilder.
es fragt mich nach Passwort (9.5 postgres) -P funktioniert nicht
InformationsquelleAutor Craig Ringer