Постоянно установленный путь к схеме Postgresql
Мне нужно установить путь к схеме в Postgres, чтобы не каждый раз указывать таблицу точек схемы, например schema2.table
, Установить путь к схеме:
SET SCHEMA PATH a,b,c
кажется, работает только для одного сеанса запроса на Mac, после того, как я закрываю окно запроса, переменная пути устанавливает себя по умолчанию.
Как я могу сделать это постоянным?
4 ответа
(А если у вас нет доступа администратора к серверу)
ALTER ROLE <your_login_role> SET search_path TO a,b,c;
Две важные вещи, о которых нужно знать:
- Когда имя схемы не простое, оно должно быть заключено в двойные кавычки.
- Порядок, в котором вы устанавливаете схемы по умолчанию
a, b, c
имеет значение, так как это также порядок, в котором схемы будут искать таблицы. Поэтому, если у вас есть одно и то же имя таблицы в нескольких схемах по умолчанию, двусмысленности не будет, сервер всегда будет использовать таблицу из первой схемы, которую вы указали дляsearch_path
,
Вы можете установить по умолчанию search_path
на уровне базы данных:
ALTER DATABASE <database_name> SET search_path TO schema1,schema2;
Или на уровне пользователя или роли:
ALTER ROLE <role_name> SET search_path TO schema1,schema2;
Или, если у вас есть общая схема по умолчанию во всех ваших базах данных, вы можете установить общесистемное значение по умолчанию в файле конфигурации с параметром search_path.
Когда база данных создается, она создается по умолчанию из скрытой "шаблонной" базы данных с именем template1, вы можете изменить эту базу данных, чтобы указать новый путь поиска по умолчанию для всех баз данных, созданных в будущем. Вы также можете создать другую базу данных шаблонов и использовать CREATE DATABASE <database_name> TEMPLATE <template_name>
создать ваши базы данных.
Джош прав, но он пропустил один вариант:
ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;
Установите путь поиска для пользователя в одной конкретной базе данных.
Если вы работаете исключительно с одной базой данных на машине, вы можете сохранить схему по умолчанию в~/.psqlrc
:
set search_path to a,b,c
Подробнее об этом здесь . Если вы хотите сохранить информацию о подключении по умолчанию, чтобы вы могли просто запуститьpsql
каждый раз вам нужно будет использовать переменные среды для этого:
export PGHOST=localhost
export PGPORT=5432
export PGDATABASE=database
export PGUSER=username