Polaco
Jr. Member
 
Mensajes: 63
|
 |
« en: Noviembre 08, 2007, 04:12:37 » |
|
Buenas, estoy tratando de hacer el backup de la base de datos que tengo en mysql cuando cierra el programa. Lo que tengo hasta ahora es lo siguiente: public void SQL_Backup() { try{ Runtime.getRuntime().exec("mysqldump -uroot -proot nombreDatabase > c:/Backup.sql"); } catch(Exception e) { e.printStackTrace(); } } Pero no hace nada. La linea mysqldump -uroot -proot nombreDatabase > c:/Backup.sql funciona si la ejecuto desde consola y me crea el archivo backup, pero no logro hacerlo desde el java. Gracias!!!
|
|
|
|
|
En línea
|
|
|
|
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #2 en: Noviembre 08, 2007, 05:35:29 » |
|
Ok ahora tengo esto: public void SQL_Backup() { InputStream i; BufferedReader br; try{ i = (Runtime.getRuntime().exec("mysqldump -uroot -proot database > C:/SQLbackup.sql").getInputStream()); br = new BufferedReader (new InputStreamReader (i)); String aux = br.readLine(); while (aux!=null) { System.out.println (aux); aux = br.readLine(); } } catch(Exception e) { e.printStackTrace(); } } Y me tira lo siguiente: -- MySQL dump 10.10 -- -- Host: localhost Database: prj-futbol-dev-v01 -- ------------------------------------------------------ -- Server version 5.0.22-community-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; Que no es la salida que creo tiene que ser, y como puede poner eso en un archivo?? Gracias!!!
|
|
|
|
|
En línea
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #3 en: Noviembre 08, 2007, 05:52:44 » |
|
Logre meter la salida en un archivo asi: public void SQL_Backup() { InputStream i; BufferedReader br; try{ i = (Runtime.getRuntime().exec("mysqldump -uroot -proot database > C:\\Backup.sql").getInputStream()); br = new BufferedReader (new InputStreamReader (i)); String aux = br.readLine(); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:/Backup.sql")); while (aux!=null) { oos.writeObject(aux); aux = br.readLine(); } oos.close(); } catch(Exception e) { e.printStackTrace(); } } Pero hay 2 cosas, primero que no es la salida que espero y segundo que escribe algunos caracteres distinto a como me muestra el print. Gracias!!!
|
|
|
|
|
En línea
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #4 en: Noviembre 08, 2007, 07:24:37 » |
|
Ahora estoy probando de otra forma. Cree un backup.bat con la linea : mysqldump -uroot -proot database > backup.sql Y lo quiero ejecutar desde java pero no me da bola El codigo: public void SQL_Backup() { Runtime rt = Runtime.getRuntime(); try{ rt.exec ("C:\\Backup.bat"); } } catch(Exception e){System.out.println(e);} } Porque no corre?  Probe de varias formas pero no lo logro. El backup.bat anda perfecto si lo ejecuto solo. Gracias!!
|
|
|
|
|
En línea
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #5 en: Noviembre 08, 2007, 07:39:43 » |
|
Bueno de nuevo (estoy pesado como empanada de bulones  ). Lo logre pero hay un tema que me falta. El codigo: public void SQL_Backup() { try{ String auxiliar; Process p = Runtime.getRuntime().exec ("C:\\Backup.bat"); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader (new InputStreamReader(is)); while ((auxiliar=br.readLine())!=null) JOptionPane.showMessageDialog(Principal.oInicio,auxiliar,"Recuperar DB Futbol 1.0",JOptionPane.ERROR_MESSAGE); } catch (Exception e) { e.printStackTrace(); } } Ahora el problema es que me guarda el archivo Backup en el classpath . Es decir, si lo ejecuto desde el eclipse, el archivo lo guarda en la carpeta del proyecto, y si ejecuto el jar me lo guarda en la carpeta donde tengo el jar. Como hago para que lo guarde en la carpeta Backup que esta dentro de la carpeta donde tengo el jar?? Yo pense en hacerla facil y trasladar el archivo desde java una vez que lo cree, pero si hay otra forma mejor. GRACIAS
|
|
|
|
|
En línea
|
|
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #7 en: Noviembre 09, 2007, 05:46:05 » |
|
Si lo escribo desde java me tendria que quedar asi?? public void SQL_Backup() { InputStream i; BufferedReader br; try{ i = (Runtime.getRuntime().exec("mysqldump -uroot -proot database > C:\\Backup.sql").getInputStream()); br = new BufferedReader (new InputStreamReader (i)); String aux = br.readLine(); PrintWriter p = new PrintWriter(new FileWriter("C:/Backup.sql")); while (aux!=null) { p.println(aux); aux = br.readLine(); } } catch(Exception e) { e.printStackTrace(); } } } Porque no me hace nada eso, me crea un archivo vacio. Porque será que no puedo ejecutar el comando desde el java?? Que estoy haciendo mal?? GRACIAS!!
|
|
|
|
|
En línea
|
|
|
|
|
|
|
|
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #12 en: Noviembre 10, 2007, 12:19:19 » |
|
Gracias capo!! Ahora voy a tener que ver como recuperar la DB con ese backup porque no me toma la linea en la parte que le pongo el archivo que tiene que usar para hacer el backup: mysql -u user -proot database < c:/Carpeta/Backup.sql Me dice que no se encuentra la tabla Carpeta ejecutandolo en la consola. Gracias
|
|
|
|
|
En línea
|
|
|
|
|
|
Polaco
Jr. Member
 
Mensajes: 63
|
 |
« Respuesta #14 en: Noviembre 12, 2007, 04:32:31 » |
|
Si es por el nombre del fichero, pero el problema está en el directorio. Si pongo: mysqldump -uroot -proot nombreDatabase < c:\Carpeta\Backup.sql Funciona bien, ahora si pongo la carpeta que tengo que es la que tengo que usar me tira error: mysqldump -uroot -proot nombreDatabase > c:\DB Futbol 1.0\Backup\Backup.sql Me dice que no encuentra la tabla Futbol. Tendré que poner alguna opcion para que me tome bien la direccion???
|
|
|
|
|
En línea
|
|
|
|