Como seleccionar um esquema no postgres ao usar o psql?
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?
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
\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
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...
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'
Palavra-chave:
SET search_path TO
Exemplo:
SET search_path TO your_schema_name;