Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java执行sql脚本_Java_Sql_Execute - Fatal编程技术网

使用java执行sql脚本

使用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

我想使用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>
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?