
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.
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


0