我正在尝试使用postgresql和以下sqlfile创建和连接db:
-- 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运行它时,出现了一个错误
语法错误位于或接近\
1条答案
按热度按时间hfyxw5xn1#
\i
和co是命令psql
工具过程。postgresjdbc驱动程序不理解这样的命令。你有两个选择。
在java中执行这些命令吗
\connect
是通过断开jdbc连接来完成的(close()
它),然后通过使用正确的dbname和user/pass属性创建一个jdbc url来创建一个新连接。\i
通过打开文件并读取每一行(例如。BufferedReader
或者Files.lines
),然后通过创建Statement
执行它。使用process exec
你也可以使用
ProcessBuilder
激发实际的psql
命令,通过在psql
开始的进程,将这些行发送到/usr/bin/psql
不管它在哪里。你需要知道在哪里psql
要做到这一点并非易事。