Java - EJECUTAR UN ARCHIVO SQL DESDE JAVA HACIA SQLPLUS Y OBTENER SALIDA EN UN TXT.

 
Vista:
Imágen de perfil de francisco

EJECUTAR UN ARCHIVO SQL DESDE JAVA HACIA SQLPLUS Y OBTENER SALIDA EN UN TXT.

Publicado por francisco (3 intervenciones) el 07/07/2014 16:11:23
Hola a todos,
la presente es para ver si me ayudan con esto que se me presenta;
Estoy tratando de desde un programa en java netbeans ejecuta archivos .sql (crear procedure, package, tables... etc) en SQL*PLUS (ORACLE) y obtener la salida en archivo txt a mado de log. El metodo es el sigieunte:

public void ejecutapase() throws SQLException, IOException {
String fileName = "@PROCEDURE_PRUEBA.sql";
String sqlPath = "E:\\CONTROL_DE_PASES\\";

String sqlCmd = "sqlplus";

String arg1 = "user/pass@bd"; // plug in your user, password and db name
String arg2 = fileName;


FileWriter fw = new FileWriter("E:\\CONTROL_DE_PASES\\log.txt",true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw);

//getConnection(url, user, password)
try {
String line = null;
ProcessBuilder pb = new ProcessBuilder(sqlCmd, arg1, arg2);
Map<String, String> env = pb.environment();
env.put("VAR1", arg1);
env.put("VAR2", arg2);
pb.directory(new File(sqlPath));
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader bre;
try (BufferedReader bri = new BufferedReader (new InputStreamReader(p.getInputStream()))) {
bre = new BufferedReader (new InputStreamReader(p.getErrorStream()));

while ((line = bri.readLine()) !=null) {
System.out.println(line);
out.println(line);
} bri.close();
}
while ((line = bre.readLine()) != null) {
System.out.println(line);
out.println(line);
}
bre.close();
System.out.println("Done.");
}
catch (Exception err) {
}

bw.flush();
bw.close();
out.close();


}

este código se ejecuta desde un boto y se queda colgado, no veo como hacer que el programa entienda que sqlplus ha dejado de procesar.
Se les agradece de antemano el apoyo.. gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder