如何连接到数据库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
是通过打开文件并读取每一行(使用例如 BufferedReader
或 Files.lines
),然后通过创建 Statement
将每一行发送到 PSQL 来完成的并执行它。
使用进程执行
您还可以使用 ProcessBuilder
启动实际的 psql
命令,通过获取您启动的 psql
进程的标准输入将此脚本传递给它,发送这些行到 /usr/bin/psql
或它所在的任何地方。你需要知道 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
是通过打开文件并读取每一行(使用例如 BufferedReader
或 Files.lines
),然后通过创建 Statement
将每一行发送到 PSQL 来完成的并执行它。
使用进程执行
您还可以使用 ProcessBuilder
启动实际的 psql
命令,通过获取您启动的 psql
进程的标准输入将此脚本传递给它,发送这些行到 /usr/bin/psql
或它所在的任何地方。你需要知道 psql
住在哪里才能做到这一点,这并不容易。