在linux机器上从java执行mysql数据库导入脚本

mah*_*esh 1 java jdbc

我想从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();
        }
Run Code Online (Sandbox Code Playgroud)

我得到了 - java.io.IOException:无法运行程序"mysql -u root -p password db-name <db_script.sql":java.io.IOException:error = 2,没有这样的文件或目录

上面的命令在linux终端上运行正常.有人请就此提出建议.

提前致谢

Mau*_*rry 7

<重定向是一个shell的东西.尝试这样的事情:

ProcessBuilder builder = new ProcessBuilder("/bin/sh", "-c", "mysql -u root -p password db-name <  b_script.sql");
Run Code Online (Sandbox Code Playgroud)

更新:

否则,如果您使用的是java 7+,则可以在java中进行重定向:

ProcessBuilder builder = new ProcessBuilder(
        "mysql", "-u", "root", "-p", "password", "db-name");
builder.redirectInput(ProcessBuilder.Redirect.from(new File("b_script.sql")));
Run Code Online (Sandbox Code Playgroud)