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の結果が入力されます。