首页 > 解决方案 > 在 java 程序中运行 psql 命令

问题描述

我有一个要求,我需要使用 java 代码创建/删除/更改 postgres 表。

我写了一个程序如下:

public static void main(String[] args) throws IOException {
        System.out.println("Hello World!");
        Process p = Runtime.getRuntime().exec("psql -U postgres -d testdb -h localhost -p 5433 -f D:\test.sql");
    }

test.sql 文件如下所示,

Create TABLE MyTable1
(
    VersionNumber VARCHAR(32) NOT NUll
);

Create TABLE MyTable2
(
    VersionNumber VARCHAR(32) NOT NUll
);

Create TABLE MyTable3
(
    VersionNumber VARCHAR(32) NOT NUll
);

问题:

如果我运行相同的 psql 命令:

psql -U postgres -d testdb -h localhost -p 5433 -f D:\test.sql

在命令行中,它要求输入密码并创建表。

但是在java程序中,没有提供密码的规定。请让我知道如何实现它。

标签: javapostgresqlpsql

解决方案


您可以改用连接 URL

psql -f d:\test.sql postgresql://postgres:password@localhost:5433/testdb

推荐阅读