如何连接到数据库psql?

How connect to database psql?

我正在尝试使用 PostgreSQL 和此 SQL 文件创建和连接数据库:

-- recreate the user --
REVOKE ALL PRIVILEGES ON DATABASE "playground" from student;
REASSIGN OWNED BY student TO postgres;
DROP DATABASE playground WITH (FORCE);
DROP USER student;
CREATE USER student WITH PASSWORD '1';

-- recreate the database --
CREATE DATABASE playground OWNER student;
GRANT ALL PRIVILEGES ON DATABASE "playground" TO student;

-- fulfill the database --
-- \connect playground student
\connect "dbname=playground user=student password=1"

BEGIN;
\i sql/schema.sql
\i sql/data.sql
COMMIT;

但是当我尝试使用 JDBC / IntelliJ idea 运行 它时出现错误

syntax error at or near \

\i 和 co 是 psql tool processes. The Postgres JDBC driver 不理解此类命令的命令。

你有两个选择。

执行 Java

中的那些命令

\connect 是通过删除你的 JDBC 连接(close() 它),然后通过制作一个 JDBC URL 来创建一个新的连接正确的 dbname 和 user/pass 属性。

\i 是通过打开文件并读取每一行(使用例如 BufferedReaderFiles.lines),然后通过创建 Statement 将每一行发送到 PSQL 来完成的并执行它。

使用进程执行

您还可以使用 ProcessBuilder 启动实际的 psql 命令,通过获取您启动的 psql 进程的标准输入将此脚本传递给它,发送这些行到 /usr/bin/psql 或它所在的任何地方。你需要知道 psql 住在哪里才能做到这一点,这并不容易。