使用java执行sql脚本

时间:2013-06-11 11:43:10

标签: 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");
  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>

3 个答案:

答案 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");