Java 如何将mysql命令传递给ProcessBuilder

Java 如何将mysql命令传递给ProcessBuilder,java,mysql,processbuilder,Java,Mysql,Processbuilder,这就是我所拥有的: List<String> restoreCmds = new ArrayList<>(); restoreCmds.add("mysql"); restoreCmds.add("-h" + host); restoreCmds.add("-u" + login); restoreCmds.add("-p" + pass); restoreCmds.add("-e 'source dump.sql'"); restoreCmds.add(targetDB

这就是我所拥有的:

List<String> restoreCmds = new ArrayList<>();
restoreCmds.add("mysql");
restoreCmds.add("-h" + host);
restoreCmds.add("-u" + login);
restoreCmds.add("-p" + pass);
restoreCmds.add("-e 'source dump.sql'");
restoreCmds.add(targetDB);

ProcessBuilder pb = new ProcessBuilder(restoreCmds);
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process pr = pb.start();

int exitVal = pr.waitFor()

您不需要为源代码添加报价

我把线路改为following,它对我有用

restoreCmds.add("-e source dump.sql");

-e选项用于直接执行指定的命令,如手册中所示:

--execute=语句,-e语句

执行该语句并退出。禁用--强制和历史文件。默认输出格式类似于使用--batch生成的格式

您应该使用输入重定向来使用sql执行的源文件

警告:此外,您应该指定要对其执行操作的数据库的名称

restoreCmds.add("-e source dump.sql");