我需要用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;
当主方法执行时,显示重定向以从文件中读取" sample.sql"在控制台上。 而且,result.tsv仍然是空的。
如果我直接在Terminal.app中输入mysql -u root -ppassword -D sql2xlsx < sample.sql > result.tsv
,
result.tsv不为空,并且写了预期的结果。