Como seleccionar um esquema no postgres ao usar o psql?

Tenho uma base de dados postgres com vários esquemas. Quando me ligo à base de dados a partir de uma linha de comandos com psql e executo \dt, ela usa o esquema de ligação por omissão que é público. Há alguma bandeira que eu possa especificar ou como posso alterar o esquema?

Author: Benjamin W., 2015-12-05

5 answers

No PostgreSQL, o sistema determina qual a tabela que se entende por seguir um caminho de pesquisa, que é uma lista de esquemas para procurar.

A primeira tabela correspondente no caminho de pesquisa é tomada como sendo a desejada, caso contrário, se não houver correspondência, um erro é levantado, mesmo que existam nomes de tabela correspondentes noutros esquemas na base de dados.

Para mostrar a localização da pesquisa actual, poderá usar o seguinte comando:

SHOW search_path;
E para colocar o novo esquema no caminho, você poderia uso:
SET search_path TO myschema;

Ou se quiser vários esquemas:

SET search_path TO myschema, public;

Referência: https://www.postgresql.org/docs/current/static/ddl-schemas.html

 75
Author: Ciro Pedrini, 2018-01-22 15:56:03
Queres mudar a base de dados?
\l - to display databases
\c - connect to new database

Actualização.

Li outra vez a tua pergunta. Para mostrar os esquemas
\dn - list of schemas

Para mudar o esquema, pode tentar

SET search_path TO
 36
Author: miholeus, 2016-08-01 00:15:21

Use o nome do esquema com o período no comando psql para obter informações sobre este esquema.

Configuração:

test=# create schema test_schema;
CREATE SCHEMA
test=# create table test_schema.test_table (id int);
CREATE TABLE
test=# create table test_schema.test_table_2 (id int);
CREATE TABLE

Mostra a lista de relações em test_schema:

test=# \dt test_schema.
               List of relations
   Schema    |     Name     | Type  |  Owner   
-------------+--------------+-------+----------
 test_schema | test_table   | table | postgres
 test_schema | test_table_2 | table | postgres
(2 rows)

Mostrar test_schema.test_table definição:

test=# \d test_schema.test_table
Table "test_schema.test_table"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 

Mostra todas as tabelas em test_schema:

test=# \d test_schema.
Table "test_schema.test_table"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 

Table "test_schema.test_table_2"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 

Etc...

 13
Author: klin, 2015-12-04 22:29:10

Isto é antigo, mas coloquei as exportações no meu pseudónimo para me ligar ao db:

alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h host -U user -d database etc'

E para outro esquema:

alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h host -U user -d database etc'
 3
Author: techbrownbags, 2018-01-22 15:33:21

Palavra-chave:

SET search_path TO

Exemplo:

SET search_path TO your_schema_name;
 0
Author: appsdownload, 2017-10-30 16:03:23