如何从Java程序向psql提供SQL脚本?

如何从Java程序向psql提供SQL脚本?,java,postgresql,psql,Java,Postgresql,Psql,我需要向Postgres数据库提供一个SQL脚本。我正在创建一个进程实例,该实例以脚本路径为参数执行psql。守则的核心: public static void main(final String[] args) { ProcessBuilder pb = new ProcessBuilder("psql", "-d base", "-U user", "-f path/new_schema.sql"); Map<String, String> env = pb.e

我需要向Postgres数据库提供一个SQL脚本。我正在创建一个
进程
实例,该实例以脚本路径为参数执行
psql
。守则的核心:

public static void main(final String[] args) 
{
    ProcessBuilder pb = new ProcessBuilder("psql", "-d base", "-U user", "-f path/new_schema.sql");
    Map<String, String> env = pb.environment();
    env.put("PGPASSWORD", "pass");
    pb.redirectErrorStream(true);

    try
    {
         Process p = pb.start();
         InputStream stdout = p.getInputStream ();
         BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));

         String line;
         while ((line = reader.readLine ()) != null) 
         {
             System.out.println ("Stdout: " + line);
        }
    }
    catch (Exception ex)
    {
        System.out.println("Something went wrong: " + ex.getMessage());
    }
}
然后在启动
流程之前添加一个新的环境变量
实例:

env.put("PGPASSFILE", "/home/user/.pgpass");
尽管如此,我还是收到了“身份验证失败”消息

.pgpass
文件具有正确的权限(
0600
),如果我直接从shell调用
psql
,则该文件正在执行其工作

我错过了什么

env.put("PGPASSFILE", "/home/user/.pgpass");