我想用java执行sql脚本 Java程序是:
import java.io.*;
public class script{
public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec ("psql -U mit -d d980 -h tpeux250.sgp.st.com -f C:/java program/script.sql");
BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}
但我收到以下错误
java.io.IOException:Cannot run program "psql": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start<Unknown Source>
at java.lang.Runtime.exec<Unknown Source>
at java.lang.Runtime.exec<Unknown Source>
at java.lang.Runtime.exec<Unknown Source>
at script.main<script.java:8>
答案 0 :(得分:2)
实际psql
二进制文件所在的位置不在您的PATH
环境变量中。
验证从终端运行以下命令。
echo %PATH%
如果缺少psql
bin 目录,请将其添加到您的路径中,如下所示
set PATH = %PATH%;"C:\Program Files\PostgreSQL\9.2\bin"
并尝试再次从终端运行您的psql
脚本。如果这样可以解决您的问题,请永久添加bin
目录(您必须这样做,因为您的Java程序在另一个终端中运行)
我的电脑&gt;属性&gt;高级系统设置(在左窗格中)。选择底部的Environment Variables并修改PATH以在“;”之后添加psql“bin”目录最后。
答案 1 :(得分:0)
在从java运行命令之前,请尝试在终端中执行它。我看到C:/ java程序,并希望Windows运行(windows + R)并执行cmd
。在终端尝试执行您的命令。
在Windows中尝试斜杠而不是正斜杠
C:\>cd "c:\Program Files"
成功而
C:\Program Files>cd "c:/Program Files"
The system cannot find the path specified.
不是。所以请使用C:\java program\script.sql
答案 2 :(得分:-2)
使用此
Process p = Runtime.getRuntime().exec ("cmd.exe /c psql -U mit -d d980 -h tpeux250.sgp.st.com -f C:/java program/script.sql");