使用java执行sql脚本
我想使用java执行sql脚本 Java程序是:使用java执行sql脚本,java,sql,execute,Java,Sql,Execute,我想使用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"); Bu
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>
java.io.IOException:无法运行程序“psql”:CreateProcess error=2,系统找不到指定的文件
在java.lang.ProcessBuilder.start
在java.lang.Runtime.exec
在java.lang.Runtime.exec
在java.lang.Runtime.exec
在script.main
使用此
Process p = Runtime.getRuntime().exec ("cmd.exe /c psql -U mit -d d980 -h tpeux250.sgp.st.com -f C:/java program/script.sql");
实际的
psql
二进制文件所在的位置不在PATH
环境变量上
要验证,请从终端运行以下命令
echo %PATH%
如果缺少psql
bin目录,请将其添加到路径中,如下所示
set PATH = %PATH%;"C:\Program Files\PostgreSQL\9.2\bin"
然后再次尝试从终端运行psql
脚本。如果这解决了您的问题,请永久添加bin
目录(您必须这样做,因为您的Java程序运行在不同的终端上)
我的电脑>属性>高级系统设置(在左窗格中)。在底部选择环境变量并修改路径,以便在末尾的“;”之后添加psql“bin”目录
在从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
系统找不到指定的文件可以从shell运行命令吗?直接从终端尝试!请使用ProceBuilder,处理参数和空白的JDBC看起来是干净的方式…?现在错误不会出现..但它不会进入while loop..什么都没有打印..你能找出代码psql-u mit-d d980-h tpeux250.sgp.st.com-f C:/java program/script.sql的问题吗?首先将psql命令添加到你的路径中变量或给出安装psql命令的整个路径,然后尝试在cmd中运行,如果在cmd中运行,则可以从java代码运行如果我在unix中使用此命令,那么将出现什么来代替cmd.exe?