mysql如何执行 shell 重定向 (命令 > output.txt) 使用 ProcessBuilder 吗?

标签: MySQL Java windows
发布时间: 2016/10/15 14:23:31
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要备份 MySQL 数据库使用 ProcessBuilder> 字符不会被解释,如我所料。这是我的代码︰

java.util.List<String> cmd = new java.util.ArrayList<>();
cmd.add("mysqldump");
cmd.add("-u");
cmd.add("root");
cmd.add("-p"+password);
cmd.add("DBx");
cmd.add(">");
cmd.add("DBbk.sql");

ProcessBuilder pb = new ProcessBuilder(cmd);
pb.directory(new File("."));
Process p = pb.start();
p.waitFor();

BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((line = err.readLine()) != null) {
    System.out.println(line);
}

输出为︰

警告︰ 使用命令行界面上的密码可以是没有安全感。
了 mysqldump︰ 找不到表:">"

解决方法 1:

试一试 (只显示解决方案的重要部分)︰

new ProcessBuilder("cmd", "/C", "your_command > DBbk.sql").start() 

这种方式,你显式调用 cmd 。在 Linux 中,您可以调用 bash 或无论壳你使用。

赞助商