meh*_*any 120 postgresql psql
我有一个包含多个模式的postgres数据库.当我从shell连接到数据库时psql,我运行\dt它使用默认的公共连接模式.是否有我可以指定的标志或如何更改架构?
Cir*_*ini 152
在PostgreSQL中,系统通过遵循搜索路径来确定表示哪个表,搜索路径是要查看的模式列表.
搜索路径中的第一个匹配表被视为所需的匹配表,否则,如果没有匹配则引发错误,即使数据库中的其他模式中存在匹配的表名.
要显示当前搜索路径,可以使用以下命令:
SHOW search_path;
Run Code Online (Sandbox Code Playgroud)
要将新架构放在路径中,您可以使用:
SET search_path TO myschema;
Run Code Online (Sandbox Code Playgroud)
或者如果你想要多个模式:
SET search_path TO myschema, public;
Run Code Online (Sandbox Code Playgroud)
参考:https://www.postgresql.org/docs/current/static/ddl-schemas.html
小智 68
你想改变数据库吗?
\l - to display databases
\c - connect to new database
Run Code Online (Sandbox Code Playgroud)
更新.
我再读一遍你的问题.显示模式
\dn - list of schemas
Run Code Online (Sandbox Code Playgroud)
要更改架构,您可以尝试
SET search_path TO
Run Code Online (Sandbox Code Playgroud)
kli*_*lin 24
在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
Run Code Online (Sandbox Code Playgroud)
显示关系列表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)
Run Code Online (Sandbox Code Playgroud)
显示test_schema.test_table定义:
test=# \d test_schema.test_table
Table "test_schema.test_table"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
Run Code Online (Sandbox Code Playgroud)
显示所有表格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 |
Run Code Online (Sandbox Code Playgroud)
等等...
Moh*_*eer 22
\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'.
Run Code Online (Sandbox Code Playgroud)
小智 17
如果你在 psql 中输入
set schema 'temp';
Run Code Online (Sandbox Code Playgroud)
然后 \d 显示“temp”中的所有关系
tec*_*ags 10
这是旧的,但我将导出放在我的别名中以连接到db:
alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h host -U user -d database etc"
Run Code Online (Sandbox Code Playgroud)
对于另一个架构:
alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h host -U user -d database etc"
Run Code Online (Sandbox Code Playgroud)
小智 9
关键词:
SET search_path TO
Run Code Online (Sandbox Code Playgroud)
例子 :
SET search_path TO your_schema_name;
Run Code Online (Sandbox Code Playgroud)
快速解决方案可能是:
SELECT your_db_column_name from "your_db_schema_name"."your_db_tabel_name";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151056 次 |
| 最近记录: |