Ciao, la mia applicazione dovrebbe essere in grado di fare il restore di un database postgres senza che l'utente debba mettersi a digitare i comandi da terminale.
Ho deciso quindi di utilizzare il seguente codice:
codice:
public void restore(String file){
try {
ProcessBuilder pb = new ProcessBuilder("pg_restore", "-h", host, "-d", dbName,
"-U", SystemManager.USERNAME_DB, file);
//pb.environment().put("PGPASSWORD", "********");
pb.redirectErrorStream(true);
pb.start();
} catch (Exception e) {
e.printStackTrace();
}
}
Naturalmente dentro le variabili host, dbName e file ci sono i dati corretti.
Il tutto non funziona anche se penso che sia corretto. non riesco a capire perchè.
Ho provato anche decommentando la riga che adesso è commentata (nel codice che ho preso da esempio era decommentata) ma non va lo stesso.
Se lancio lo stesso comando da linea di comando (quindi visto che sono su Widows da cmd.exe) il restore viene eseguito.
Se può servire, il dunp del DB lo faccio sempre da Java tramite un metodo speculare:
codice:
public void eseguiBackup(String path){
try {
ProcessBuilder pb = new ProcessBuilder("pg_dump", "-h", host, "-Fc", "-f", path,
"-U", SystemManager.USERNAME_DB, dbName);
pb.redirectErrorStream(true);
pb.start();
} catch (Exception e) {
e.getMessage();
}
}
Questo metodo viene eseguito correttamente e il dump viene effettuato.
Qualcuno riesce a capire dove è l'inghippo??
Grazie mille!