zum umleiten von stdin, um java-Runtime.exec?

Möchte ich ausführen einer sql-Skripte mit Java-Runtime.exec-Methode. Ich beabsichtige aufrufen mysql.exe /mysql.sh und leiten Sie die Skript-Datei zu diesem Prozess.
Über die Eingabeaufforderung kann ich den Befehl ausführen

<mysqInstallDir\/bin\mysql.exe -u <userName> -p <password> < scripts\create_tables.sql

Kann ich aufrufen mysql.exe mit der Laufzeit.exec-aber wie kann ich die Umleitung von Daten von der sql Datei mysql.exe ?


Lese ich den Artikel in http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4 und verwendet die StreamGobbler Mechanismus, um die Fehler-und Ausgabe-streams. Kein problem. Das problem kommt beim Lesen der Datei "scripts\create_tables.sql" mit BufferedReader und Weitergabe der Inhalte zu prcess den Ausgabestrom. Ich hatte erwartet, der Prozess die Daten übergeben, die mysql.exe. Aber ich sehe, dass nur die erste Zeile gelesen wird, die von dieser sql-Datei.

OutputStream outputstream = proc.getOutputStream();
OutputStreamWriter outputstreamwriter = new OutputStreamWriter(outputstream);
BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter);
  while ( (line = br.readLine()) != null)
  {
bufferedwriter.write(line);
bufferedwriter.flush();
System.out.println(line);
  }
  bufferedwriter.flush();
  bufferedwriter.close();
  proc.waitFor() 

Wenn ich dies Tue, sehe ich, dass nur die erste Zeile in create_tables.sql ausgeführt wird. Der exit-code ist 0 und es gibt keine Fehler-oder Ausgang.

InformationsquelleAutor user307227 | 2010-04-01
Schreibe einen Kommentar