我有一个具有多个模式的postgres数据库。当我用psql从shell连接到数据库并运行\dt时,它使用默认的公共连接模式。是否有可以指定的标志或如何更改模式?


当前回答

要更改数据库吗?

\l - to display databases
\c - connect to new database

更新。

我又看了一遍你的问题。 显示模式

\dn - list of schemas

要改变模式,您可以尝试

SET search_path TO

其他回答

关键词:

SET search_path TO

例子:

SET search_path TO your_schema_name;

如果在docker exec中使用PSQL,它是这样的:

docker exec -e "PGOPTIONS=--search_path=<your_schema>" -it docker_pg psql -U user db_name

如果你使用PSQL,只需输入

SET schema 'temp';

在此之后,\d显示“temp”中的所有关系

这是旧的,但我把导出放在我的别名连接到db:

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

对于另一个schema:

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

在psql命令中使用带句点的模式名获取该模式的信息。

设置:

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

显示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)

显示test_schema。test_table定义:

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

显示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 | 

等等……