Javaからmysqlコマンドを実行し、結果をファイルに書き出したい。
Javaからmysqlコマンドを実行し、結果をファイルに書き出したいのですがうまく行きません。
実行環境はMacOS 10.11.2です。
public class Main {
public static void main(String[] args) {
String[] cmd = new String[]{"/bin/sh", "-c", "mysql", "-u", "root", "-ppassword", "databaseName"};
ProcessBuilder builder = new ProcessBuilder(cmd);
builder.redirectInput(ProcessBuilder.Redirect.from(new File("sample.sql")));
builder.redirectOutput(new File("result.tsv"));
try {
Process p = builder.start();
p.waitFor();
System.out.println(builder.redirectInput());
} catch (IOException | InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
sample.sql select * from sample;
コンソールにredirect to read from file "sample.sql"と出力され、
result.tsvは空白のまま生成されます。
ターミナルに直接mysql -u root -ppassword -D sql2xlsx < sample.sql > result.tsvと入力した場合は、
result.tsvにはselectの結果が入力されます。