style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Restaurar Base de datos mysql con java desde ubuntu 14.04

Necesito que chequen este código y ver como funciona, y me digan donde estoy mal.
Estoy programando en java uso ubuntu 14.04,

Uno de los módulos que estoy haciendo, es la de crear copias de seguridad de la base de datos desde la aplicación ahi no tengo problemas se crea bien la copia de seguridad, ese archivo que se crea si lo cargo con la utileria que trae mysql Worrbench, si se restaura la base de datos, y de igual forma si lo ejecuto desde la terminal si realiza la restauracion de base de datos.
mysql --user=root --database=sisdigital --password=12345 --host=localhost -e "source /home/peche/Escritorio/sistemas 08145201012015.sql"

pero no me gusta entregarle al cliente y cuando requiera hacer una restauración de la base de datos nimodo de decirle abre el mysql workbench y vez a tal opcion y pues asi pues no deberia de ser, ni tampoco decirle aver escribe este comando en la terminal de ubuntu;

tengo este codigo funciona bien en windows hace la restauracion de la base de datos pero en linux no quiere funcionar....

public void restaurar(){
    Process proc;
        if (!txtDirDestino.getText().equals("")) {
            String pros = "mysql --user="+user +" --database=" + basededatos+
                    " --password=" + pass +" --host="+host +" --port="+port+ " -e \"source " + txtDirDestino.getText() + "\"";            
     
           
            System.out.println(pros);
            try {
                BufferedReader brin;
                BufferedReader brer;
                int caracter = -1;
                proc = Runtime.getRuntime().exec(pros);                
                brin = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                do {
                    caracter = brin.read();
                } while (caracter != -1);
                brer = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
                do {
                    caracter = brer.read();
                    if (caracter != -1) {
                        errs += "" + (char) caracter;
                    }
                } while (caracter != -1);
                proc.waitFor();
                brer.close();
                if (errs.equals("")) {
                    bandera = 1;
                    progresbar();
                } else {
                    bandera = 0;
                    progresbar();
                }
            } catch (IOException | InterruptedException exc) {
                 System.out.println("Ocurrio un error:\n"+exc);
                bandera = 2;
                progresbar();
//            JOptionPane.showMessageDialog(null," Ocurrio un error:\n"+exc.getMessage());
                errs = exc.getMessage();
            }
        }else{
            JOptionPane.showMessageDialog(null,"EL SISTEMA NO HA ENCONTRADO UNA RUTA ESPECIFICA\nPARA REALIZAR EL RESPALDO");
        }
    }

muchos diran oye pero porque en linux como es posible si todo mundo usa Windows este es la realidad.

Estoy desarrollando una aplicacion para mi titulacion y es un sistema que maneja base de datos y todo el rollo, la aplicacion en desarrollo, lo estoy haciendo en RMI- cliente-servidor

en la empresa en donde estoy ya instale una parte, tonces ya para terminar me faltan estas solo esto la de restaurar base de datos;

el Servidor esta corriendo bajo la plataforma linux, esta en un solo lugar, esta prendido las 24 horas todos los dias,.. y los clientes pues corren bajo windows, algunos xp, otros windows 7 etc;

el sistema lo ocupan varios departamentos

y es por eso que estoy batallando con esta ultima parte... con la restauracion de la base de datos en linux;

Lo raro de esto es que el codigo si funciona bien en windows restaura bien las bases de datos
necesito que me echen la mano, aver que estoy haciendo mal, o realmente como hacer la restauracion de manera correcta..

he probado de ponienfo la ruta directa de mysql de esta forma

 
String pros = "/usr/bin/mysql --user="+user +" --database=" + basededatos+
                    " --password=" + pass +" --host="+host +" --port="+port+ " -e \"source " + txtDirDestino.getText() + "\"";

pero nomas no funciona, pero como le digo este misma sintaxis lo ejecuto en la terminal si me hace la restauracion de la base de datos es lo mas raro, no se que esta pasando en el codigo..

no se si hay que modificar siertos parametros en my.conf

se que no tiene que ver nada el patch, porque funciona bien en la terminal de comandos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

operador de redirección

 

También puedes utilizar el operador de redirección (1) (2):

String pros = "/bin/sh -c mysql --user=" + user +
                              " --database=" + basededatos +
                              " --password=" + pass +
                              " --host=" + host +
                              " --port=" + port +
                              " < '" + txtDirDestino.getText() + "'";

Notas

  1. MySQL :: MySQL 5.0 Reference Manual :: 3.5 Using mysql in Batch Mode
  2. Illustrated Redirection Tutorial

P.D.: Para una mejor visualización de tu código, prueba colocándolo entre las etiquetas <code> y </code>. Puedes darle formato en http://codebeautify.org/javaviewer .

~~~

Imagen de pechsclk

No funciona el metodo

ya lo habia probado de esa forma y marca error acceso denegado al user de la bd; ya solucione el problema aunque es un poco largo el camino, porque este todo la sentencia directa lo escribo en un archivo bash con extencion sh, luego sobre ese archivo ejeucto en una parte del codigo

 proc = Runtime.getRuntime().exec(pros);
pero para eso ese modulo debe funcionar tanto en windows como en linux asi que el codigo completo queda asi
primero checo para que determinte en que sistema operativo esta corriendo, si es en linux leer el archivo bash, y si es en windows le la pimera linea normal

 String pros = "mysql --user="+user +" --database=" + basededatos+
" --password=" + pass +" --host="+host +" --port="+port+ " -e \"source " + txtDirDestino.getText() + "\"";  

y todo funciona bine...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">