我想通过运行SQL脚本还原数据库并监视还原进度。此外,我使用pv命令查看还原的进度,它在Linux终端下运行良好,并且可以看到进度。但是当我使用Java执行它时,我无法获得指示进度的pv的标准输出。
public void restore() throws IOException, InterruptedException {
String s = "pv -p /var/test.sql | mysql -h127.0.0.1 -uroot -ptest -D test";
Process process = null;
String[] cmd = { "/bin/sh", "-c", s};
try {
process = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(process.getErrorStream()));
System.out.println("Here is the standard output of the command:\n");
String s1 = null;
while ((s1 = stdInput.readLine()) != null) {
System.out.println(s1);
}
System.out.println("Here is the standard error of the command (if any):\n");
while ((s1 = stdError.readLine()) != null) {
System.out.println(s1);
}
System.out.println("after");
} catch (Exception e) {
e.printStackTrace();
}
}
我希望输出为“警告:在命令行界面上使用密码可能不安全。 [================================================== ================================================== ================================================== ================================================== ==========>] 100%“
但是实际结果是“警告:在命令行界面上使用密码可能不安全。”,并且无法获得进度。
我已经搜索了很长时间,但是没有找到解决该问题的方法,有人可以帮助我吗?