1
我们试图通过将pg_dump输出导入psql来将数据库转储导入到本地数据库。当我们在命令行中执行命令它工作正常,但它失败的Javapg_dump ProcessBuilder中的参数太多
这是怎么样子的ProcessBuilder
内:
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h" + hostRemote,
"-p" + portRemote, "-U" + usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h" + hostLocal, "-p" + portLocal, "-U" + usernameLocal, dbNameLocal);
这就是我们得到的错误:pg_dump的:太多的命令行参数(第一个是|)。
有没有我们没有看到的一些特殊的捕获?任何帮助,将不胜感激。
编辑:整理了单独标记:
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h", hostRemote,
"-p", Integer.toString(portRemote), "-U", usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h", hostLocal, "-p", Integer.toString(portLocal),
"-U", usernameLocal, dbNameLocal);
您需要构建数组或列表,并将每个标记作为列表或数组中的自己的项目。 –
例如,您将字符串与空白连接在一起并将其作为标记进行提供 - 不要这样做 - 而是将它们分隔为字符串标记中没有空白的单独标记。所以不是''-h“+ hostRemote,'而是:''-h”,hostRemote,' –
另外,你是否正确捕获流? –