我想从 java 程序的 .sql 文件执行数据库导入。我的程序在 Windows 上运行良好。但我在 linux 机器上遇到问题。
代码-
try {
ProcessBuilder builder = new ProcessBuilder("mysql -u root -p password db-name < db_script.sql");
builder.redirectErrorStream(true);
Process pr = builder.start();
InputStream is = pr.getInputStream();
// Now read from it and write it to standard output.
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
我得到 - java.io.IOException:无法运行程序“mysql -u root -p 密码 db-name < db_script.sql": java.io.IOException: error=2, 没有那个文件或目录
上述命令在 linux 终端上运行良好。 请有人就此向我提出建议。
提前致谢
最佳答案
< 重定向是一个 shell 的东西。尝试这样的事情:
ProcessBuilder builder = new ProcessBuilder("/bin/sh", "-c", "mysql -u root -p password db-name < b_script.sql");
更新:
否则,如果您使用的是 java 7+,则可以在 java 中进行重定向:
ProcessBuilder builder = new ProcessBuilder(
"mysql", "-u", "root", "-p", "password", "db-name");
builder.redirectInput(ProcessBuilder.Redirect.from(new File("b_script.sql")));
关于java - 在linux机器上从java执行mysql数据库导入脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939360/