import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.FileWriter; import java.io.PrintWriter; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class BackUpSample { private int BUFFER = 10485760; //para guardar en memmoria private StringBuffer temp = null; //para guardar el archivo SQL private FileWriter fichero = null; private PrintWriter pw = null; public boolean CrearBackup(String host, String port, String user, String password, String db, String file_backup){ boolean ok=false; try{ //sentencia para crear el BackUp Process run = Runtime.getRuntime().exec( "mysqldump --host=" + host + " --port=" + port + " --user=" + user + " --password=" + password + " --compact --complete-insert --extended-insert --skip-quote-names" + " --skip-comments --skip-triggers " + db); //se guarda en memoria el backup InputStream in = run.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); temp = new StringBuffer(); int count; char[] cbuf = new char[BUFFER]; while ((count = br.read(cbuf, 0, BUFFER)) != -1) temp.append(cbuf, 0, count); br.close(); in.close(); /* se crea y escribe el archivo SQL */ fichero = new FileWriter(file_backup); pw = new PrintWriter(fichero); pw.println(temp.toString()); ok=true; } catch (Exception ex){ ex.printStackTrace(); } finally { try { if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } return ok; } }
public class Main { public static void main(String[] args) { new BackUpSample().CrearBackup("HOST", "PUERTO", "USUARIO", "PASSWORD", "BASE DE DATOS","DIRECCION DEL ARCHIVO"); } }
donde:
HOST : localhost
PUERTO: 3306
USUARIO: el usuario de mysql
PASSWORD: el paasword de mysql
BASE DE DATOS: el nombre de la base de datos del cual se quiere realizar el backup
DIRECCION DEL ARCHIVO: la direccion donde se guardara el backup. Ej. "e:/copia de seguridad/backup.sql"
y tenemos:
27 comentarios:
Saludos... y muy buen aporte, cuando ejecute el codigo del backup, me salia:
java.IOException: cannot run program "mysqldump": CreateProcess error=2, el sistema no puede hallar el archivo especificado...
lo probe en S.O. vista 64bits y en S.O. XP 32bits, no se a q se debe este problema, y como podria solucionarlo...
Gracias de antemano...
¿creaste la base de datos? :)
si es asi, entonces cheka la configuracion de mysqldump, por que no lo encuentra, prueba por linea de comandos si mysqldump esta bien configurado
pues si cree la base de datos, todo practicamente... pero me sale ese error... habia probado anteriormente un backup en unos de mis programas, y siempre me salio ese mensajito, quizas sea por la ubicacion del mysqldump???, entonces tendria q especificarlo???, y como haria eso???, bueno muchas gracias
Hola MikeNF yo tambien nmire este codigo y me salia el mismo error suyo pero no hay de que preocuparse solo cambie un poco el codigo de mysql dump por la ruta de donde esta por ejemplo yo uso wamp server y el mysqldump esta en
C:\wamp\mysql\bin\mysqldump.exe....
asi el codigo le funciona si no usa wamp ps con el buscador de su pc busque ese archivo mysqldump.exe y copie la ruta y la reemplaza en el codigo asi:
yo lo hago con la ruta que tengo ud con la ruta que tenga...
Process run = Runtime.getRuntime().exec(
"C:\\wamp\\mysql\\bin\\mysqldump --host=" + host + " --port=" + port +
" --user=" + user + " --password=" + password +
" --compact --complete-insert --extended-insert --skip-quote-names" +
" --skip-comments --skip-triggers " + db);
listo espero le sirva nos vemos recuerde que si es \ tiene que ponerlo \\ o le sale error...
hola, y si kisiera utilizar este codigo para crear un respaldo pero de mis documentos k es lo k tendria que modificar??? o solo funiciona para crear respaldos de mysql??
gracias por la ayuda pero tengo una duda como restaurar la base de datos a partir del backup.sql en netbeans seria de gran ayuda
El cod anda bárbaro.. pero a la hora de restaurar la base de datos estoy teniendo problemas, uso lo sig:
Process run =Runtime.getRuntime().exec(
"C:\\...bla bla bla...\\mysql.exe --password=" " --user="root" db < archivo.sql);
si lo hago con el administrador de mysql en localhost, anda bien.. pero desde el sistema hecho con java, no me deja.
Alguna recomendación??
gracias!
wow si muchas gracias por el codigo, pero igual que el comentario anterior, no puedo restaurar la base de datos, ni con una instruccion sql enviada desde java.... AYUDA POR FAVOR!! es para un proyecto y lo necesito....
al restaurar el problema es que no se puede encontrar la ruta de mysql, si colocas la ruta absoluta no hay ningun problema
YO QUISIERA SABER SI ALGUIEN TIENE N CODIGO PARECIDO PERO PARA ORACLE
jc mouse lml
funciona yeah!!
T_______T *
Y si solo quiero sacar el backup de algunas tablas y procedimientos espceificos?.
Buenas Tardes Mouse... te felicito por tus aportes que nos ayudan bastante... quisiera saber si podrías poner un tutotial como este pero ahora para restaurar una base de datos. Gracias de antemano.
Mi nombre es eduardo
, estoy aciendo el crear backup pero me dice este error
java.io.FileNotFoundException: C:\Users\ejnsilva\Documents (Acceso denegado)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:194)
at java.io.FileOutputStream.(FileOutputStream.java:84)
at java.io.FileWriter.(FileWriter.java:46)
at Formularios.BackUpSample.CrearBackup(BackUpSample.java:42)
at Formularios.Main.main(Main.java:21)
no lo entiendo
excelente me funciono muy bien...gracias
Excelente blog!
Muy bueno.... fue ctrl+c y ctrl+v y listo! jaja gracias por el aporte...
Buenas, me gustaria saber como realizar un backup cuando el servidor MySQL esta ubicado en otra direccion?
Tengo 2 PCs un cliente y un server, como puedo hacer entonces??
necesito ayuda para poder restaurar la base de datos
hola...ahora podrias ayudarnos a ejecutar ese backup que se hizo desde java...porfis
HOLA .MUY INTERESANTE,,,PERO SABES TRATE DE MODIFICARLO Y APLICARLO PARA SQL Server ,PERO NADA......PODRIAS AYUDARME
Gracias, me ha servido.
Mouse muchas gracias por el aporte me ayudo bastante lo hice en una maquina de 32 bit y funciono muy bien al migrarla a una de 64 bits me dio problemas pero con la aclaracion de Kid_Goth ya lo resolvi mil gracias a los dos
Hola hermano gracias por el aporte, mira estoy tratando de hacer un backup con la ayuda de tu codigo en una aplicacion hecha en java y netbeans con linux ubuntu y bd en phpmyadmin, pero no he podido crear el backup todavia, si pudieras ayudarme te lo agradeceria.
se olvido comentar que el backup lo quiero generar desde un boton !
Buenas amigo .. me podría decir si tiene algunos ejemplos iguales pero con. Base de datos firebird ..
Como seria un backup en java con un form, y solo con un click generar el backup de mi base de datos SQLserver... please
Publicar un comentario