我有一个包含多个模式的postgres数据库.当我从shell连接到数据库时psql
,我运行\dt
它使用默认的公共连接模式.是否有我可以指定的标志或如何更改架构?
在PostgreSQL中,系统通过遵循搜索路径来确定表示哪个表,搜索路径是要查看的模式列表.
搜索路径中的第一个匹配表被视为所需的匹配表,否则,如果没有匹配则引发错误,即使数据库中的其他模式中存在匹配的表名.
要显示当前搜索路径,可以使用以下命令:
SHOW search_path;
要将新架构放在路径中,您可以使用:
SET search_path TO myschema;
或者如果你想要多个模式:
SET search_path TO myschema, public;
参考:https://www.postgresql.org/docs/current/static/ddl-schemas.html
你想改变数据库吗?
\l - to display databases \c - connect to new database
更新.
我再读一遍你的问题.显示模式
\dn - list of schemas
要更改架构,您可以尝试
SET search_path TO
在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 |
等等...
\l - Display database \c - Connect to database \dn - List schemas \dt - List tables inside public schemas \dt schema1. - List tables inside particular schemas. For eg: 'schema1'.
这是旧的,但我将导出放在我的别名中以连接到db:
alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h host -U user -d database etc"
对于另一个架构:
alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h host -U user -d database etc"