Mientras realizaba una recorrida por los blogs que suelo frecuentar, me encontré con una publicación interesante de eOS’s BLOG, donde desde un pequeño proceso en Java realiza un backup de Postgres.
Si bien el proceso es sencillo, del mismo podrás sacar algunas cosas interesante como:
- Utilizar el comando pg_dump para exportar una base de datos PostgreSQL (algo así como el mysqldump de MySQL)
- Ejecutar un comando desde Java (algo así como el system de C)
- Setear variables en el entorno actual de ejecución
El código habla por si solo:
String path = "path del archivo de backup"
Runtime r = Runtime.getRuntime();
String user = "postgres";
String dbase = "base_datos";
String password = "tu_contraseña";
Process p;
ProcessBuilder pb;
r = Runtime.getRuntime();
pb = new ProcessBuilder("pg_dump", "-v", "-D", "-f", path, "-U", user, dbase);
pb.environment().put("PGPASSWORD", password);
pb.redirectErrorStream(true);
p = pb.start();
} catch (Exception e) {
}
Via: eOS’s BLOG

Eos87
julio 9, 2008
muchas gracias por visitar mi blog, yo estuve googleando y de esa forma llegue hasta tu blog el cual me llamo mucho la atencion, especialmente por lo del look and feel de Nimbus.
Saludos
Frank Davila
diciembre 8, 2008
Esto tambien se puede aplicar para backups en los moviles, como respaldar la agenda en la memoria?
Luciano
diciembre 8, 2008
No @Frank, me temo que nada que ver.
Luis Dellan
enero 12, 2009
Saludos, me parece muy bueno tu codigo y muy facil de entender, pero al copiarlo y compilarlo me surgio un poblemita con el ProcessBuilder, me gustaria saber que clase en especial tengo que imnportar para que funcione?, hasta luego gracias.
Darling
febrero 11, 2009
Hola, sabes como hacer el backup desde php, he probado con la funcion exec y system para ejecutar el pg_dump desde una pagina php, pero no me funciona, alguna sugerencia? gracias!
El mago
abril 7, 2009
Hola !
Primero muy bueno el ejemplo, me sirvió de mucho. Quisiera preguntarles algo; hice el mismo ejemplo, con parámetros distintos, para restaurar la base de datos. EL tema es que a veces funciona bien, y a veces no. Cuando no me restaura bien no me tira ninguna una excepción … es decir me la oculta … hay algún modo qué desde Java pueda ver la execpción que me esta tirando ?,
Muchas gracias
Damián
Felipe Knappe
agosto 1, 2009
Hello,
I’m co-author from Geed Inside Blog and I’m very content that you saw and referenced my blog post about backup on postgres. I’m a Java Developer too and it is good to know a different way to do it directly from Java code.
Very good post
silvia
agosto 3, 2009
hola, muy buena informacion me sirvio de mucho, pero tengo una duda ya que lo que necesito ademas de restaurar los datos es restaurar tambien los roles , todo desde mi progrma en java, he utilizado el pg_dumpall -g , y me crea el backp, pero no puedo restaurarlo y no entiendo por que!, para restaurarlo uso el pg_restore … alguien me puede ayudar ??
Roberto
septiembre 17, 2009
Silvia,
El pg_dumpall utiliza las funciones de texto plano del pg_dump. Lo cual hace que sea incompatible con el pg_restore que solo acepta el output generado por pg_dump en formato tar. Es lamentable que la documentacion al respecto no este en un lugar mas visible.
Luciano
septiembre 17, 2009
Gracias Roberto por tu colaboración.
Saludos.
marcelo
septiembre 29, 2009
Bueno gracias por el aporte, pero no crea nada.
No funciona alguna configuracion extra…?
CarolJohana
octubre 13, 2009
Hola
Muchas gracias por tu aporte sin embargo no me funciona existe una funcion extra o una biblioteca he importado import java.lang.processBuilder por otro lado me sale error en el constructor
pb = new ProcessBuilder(“pg_dump”, “-v”, “-D”, “-f”, path, “-U”, user, dbase);
me gustaria saber si podrias guiarme mejor
Agradezco tu aporte y tu claboracion
Salu2
CarolJohana
alejandro
agosto 13, 2010
gracias me sirvio tu codigo, uaunque en windows me marcaba error pero se soluciono agregando a “pg_dump” la ruta para que lo encuentre “C:/Archivos de programa…………../postgres/…..pg_dump.exe”
dav87
julio 14, 2011
mil gracias brow!!!
aurita le voi a probar
Bajabizman
octubre 8, 2011
Hola a mi entender esta muy fácil de entender, sin embargo pregunto, por que no pusiste la clase completa si ya lo probaste… digo por que veo en los comentarios que le ha costado trabajo a los programadores poder utilizarlo.
irina
abril 12, 2012
hola me gustaria si me pudiera ayudar cuando pongo el codigo me salta al catch en esta sentencia
p = pb.start();
y no me hace el backup que puedo hcer???