使用JDBC连接到postgres时是否可以指定架构?

时间:2010-11-12 20:15:24

标签: java database postgresql jdbc database-schema

有可能吗?我可以在连接URL上指定它吗?怎么做?

10 个答案:

答案 0 :(得分:162)

我知道这已经得到了回答,但我遇到了同样的问题,试图指定用于liquibase命令行的模式。

<强>更新 从JDBC v 9.4开始,您可以使用新的currentSchema参数指定url,如下所示:

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema

基于早期的补丁出现:

http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512.html

建议的网址是这样的:

jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema

答案 1 :(得分:54)

version 9.4开始,您可以在连接字符串中使用currentSchema参数。

例如:

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema

答案 2 :(得分:48)

如果在您的环境中可以,您还可以将用户的默认架构设置为所需的架构:

ALTER USER user_name SET search_path to 'schema'

答案 3 :(得分:42)

我不相信有一种方法可以在连接字符串中指定架构。看来你必须执行

set search_path to 'schema'

在建立连接以指定架构之后

答案 4 :(得分:7)

我向PostgreSQL JDBC驱动程序提交了一个补丁的更新版本,以便在几年前启用它。您必须从源(在添加补丁后)构建PostreSQL JDBC驱动程序才能使用它:

http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php

http://jdbc.postgresql.org/

答案 5 :(得分:5)

DataSource - setCurrentSchema

实例化DataSource实现时,请查找设置当前/默认架构的方法。

例如,在PGSimpleDataSource班级电话setCurrentSchema上。

org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource ( );
dataSource.setServerName ( "localhost" );
dataSource.setDatabaseName ( "your_db_here_" );
dataSource.setPortNumber ( 5432 );
dataSource.setUser ( "postgres" );
dataSource.setPassword ( "your_password_here" );
dataSource.setCurrentSchema ( "your_schema_name_here_" );  // <----------

答案 6 :(得分:3)

不要忘记SET SCHEMA 'myschema'您可以在单独的声明中使用

  

SET SCHEMA&#39;价值&#39;是SET search_path TO值的别名。只有一个   可以使用此语法指定schema。

由于JDBC驱动程序上有9.4版本和可能的早期版本,因此支持setSchema(String schemaName)方法。

答案 7 :(得分:0)

在Go with“ sql.DB”中(注意带下划线的search_path):

postgres://user:password@host/dbname?sslmode=disable&search_path=schema

答案 8 :(得分:0)

这已经被回答了:

jdbc:postgresql:// localhost:5432 / mydatabase?currentSchema = myschema

与之前的答案一样,上述连接字符串也适用。

我已经检查了,没关系: https://youtu.be/m0lBUHSLkNM?t=79

(尽管公认的答案是8年前给出的, 它是1年前编辑的。 。 。 )

答案 9 :(得分:0)

注意:这与 jdbc url 无关

我通过安装在我的 vm(这是一个 sql 客户端)中的 psql 连接到服务器,这段代码对我来说就像一个魅力

<块引用>

options=--search_path={your_schema_name}

示例:

psql "host={your_host} port={your_port} dbname={your_dbname} user={your_user} password={your_password} options=--search_path={your_schema_name}"