Я хочу восстановить свою базу данных с помощью сценариев 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% "
, но фактический результат - «Предупреждение. Использование пароля в интерфейсе командной строки может быть небезопасным.», И прогресс не может быть получен.
Я давно гуглил, но не нашел решения этой проблемы, может кто-нибудь мне помочь ??