У меня есть база данных postgres с несколькими схемами. Когда я подключаюсь к базе данных из оболочки с помощью psql
и запускаю \dt
она использует схему соединения по умолчанию, которая является публичной. Есть ли флаг, который я могу указать, или как я могу изменить схему?
Как выбрать схему в postgres при использовании psql?
Ответ 1
В 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
Ответ 2
Вы хотите изменить базу данных?
\l - to display databases
\c - connect to new database
Update.
Я снова прочитал ваш вопрос. Чтобы отобразить схемы
\dn - list of schemas
Чтобы изменить схему, вы можете попробовать
SET search_path TO
Ответ 3
Используйте имя схемы с периодом в команде 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 |
и т.д...
Ответ 4
\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'.
Ответ 5
Это старый, но я поставил экспорт в моем псевдониме для подключения к БД:
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"
Ответ 6
ключевое слово:
SET search_path TO
пример:
SET search_path TO your_schema_name;
Ответ 7
быстрое решение может быть:
SELECT your_db_column_name from "your_db_schema_name"."your_db_tabel_name";