Tôi có một cơ sở dữ liệu postgres với nhiều lược đồ. Khi tôi kết nối với cơ sở dữ liệu từ shell psql
và tôi chạy \dt
nó sử dụng lược đồ kết nối mặc định là công khai . Có một cờ tôi có thể chỉ định hoặc làm thế nào tôi có thể thay đổi lược đồ?
Tôi có một cơ sở dữ liệu postgres với nhiều lược đồ. Khi tôi kết nối với cơ sở dữ liệu từ shell psql
và tôi chạy \dt
nó sử dụng lược đồ kết nối mặc định là công khai . Có một cờ tôi có thể chỉ định hoặc làm thế nào tôi có thể thay đổi lược đồ?
Câu trả lời:
Trong PostgreQuery, hệ thống xác định bảng nào có nghĩa là theo đường dẫn tìm kiếm, đó là danh sách các lược đồ cần tìm.
Bảng khớp đầu tiên trong đường dẫn tìm kiếm được lấy là bảng mong muốn, nếu không, nếu không có lỗi trùng khớp, ngay cả khi tên bảng phù hợp tồn tại trong các lược đồ khác trong cơ sở dữ liệu.
Để hiển thị đường dẫn tìm kiếm hiện tại, bạn có thể sử dụng lệnh sau:
SHOW search_path;
Và để đặt lược đồ mới trong đường dẫn, bạn có thể sử dụng:
SET search_path TO myschema;
Hoặc nếu bạn muốn nhiều lược đồ:
SET search_path TO myschema, public;
Tham khảo: https://www.postgresql.org/docs/cản/static/ddl-schemas.html
Bạn có muốn thay đổi cơ sở dữ liệu?
\l - to display databases
\c - connect to new database
Cập nhật.
Tôi đã đọc lại câu hỏi của bạn. Để hiển thị các lược đồ
\dn - list of schemas
Để thay đổi lược đồ, bạn có thể thử
SET search_path TO
\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'.
Sử dụng tên lược đồ với dấu chấm trong lệnh psql để lấy thông tin về lược đồ này.
Thiết lập:
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
Hiển thị danh sách các mối quan hệ trong 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)
Hiển thị test_schema.test_table
định nghĩa:
test=# \d test_schema.test_table
Table "test_schema.test_table"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
Hiển thị tất cả các bảng trong 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 |
Vân vân...
Điều này đã cũ, nhưng tôi đặt xuất khẩu trong bí danh của mình để kết nối với db:
alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h host -U user -d database etc"
Và cho một lược đồ khác:
alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h host -U user -d database etc"
export
và dấu chấm phẩy trong bí danh của bạn. Cách PGOPTIONS
này không tồn tại xung quanh sau khi bạn rời khỏi psql.
SET search_path
truy vấn duy nhất. cảm ơn bạn!
từ khóa:
SET search_path TO
thí dụ :
SET search_path TO your_schema_name;