¿Es posible especificar el esquema cuando se conecta a postgres con JDBC?

¿Es posible? ¿Puedo especificarlo en la URL de conexión? ¿Como hacer eso?

Sé que esto ya fue respondido, pero me encontré con el mismo problema al tratar de especificar el esquema que se utilizará para la línea de comandos de liquibase.

Actualización A partir de JDBC v 9.4 , puede especificar la url con el nuevo parámetro currentSchema de esta manera:

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

Aparece en base a un parche anterior:

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

Que url propuesto es así:

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

A partir de la versión 9.4 , puede usar el parámetro currentSchema en su cadena de conexión.

Por ejemplo:

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

Si es posible en su entorno, también puede establecer el esquema predeterminado del usuario en el esquema deseado:

 ALTER USER user_name SET search_path to 'schema' 

No creo que haya una forma de especificar el esquema en la cadena de conexión. Parece que tienes que ejecutar

 set search_path to 'schema' 

después de la conexión se hace para especificar el esquema.

Envié una versión actualizada de un parche al controlador JDBC de PostgreSQL para habilitar esto hace algunos años. Deberá construir el controlador PostreSQL JDBC desde el origen (después de agregar el parche) para usarlo:

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

http://jdbc.postgresql.org/

No olvide SET SCHEMA 'myschema' que puede usar en un Statement separado

SET SCHEMA ‘valor’ es un alias para SET valor de búsqueda TO valor. Solo se puede especificar un esquema usando esta syntax.

Y desde la versión 9.4 y posiblemente versiones anteriores en el controlador JDBC, existe soporte para el setSchema(String schemaName) .

DataSourcesetCurrentSchema

Al instanciar una implementación de DataSource , busque un método para establecer el esquema actual / predeterminado.

Por ejemplo, en la clase PGSimpleDataSource , llame a 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_" ); // <----------