1. Часто при написании sql-кода для Postgresql в запросах
приходится обращаться к таблицам, находящимся в разных схемах БД. При этом в окне редактора Query надоедает к названию таблицы добавлять наименование схемы, например,
как schema_name.table_name. Если для таблиц, расположенных в public, схему
можно не указывать, то для таблиц не из public, это необходимо. Чтобы уменьшить трудоемкость
написания такого кода существует переменная search_path.
search_path - это системная переменная Postgresql, действующая
в рамках одной сессии и позволяющая указывать через запятую схемы, где будет
выполняться поиск таблицы.
Более не нужно писать длинное schema_name.table_name,
достаточно в sql-скрипте выполнить команду:
SET search_path TO PUBLIC,
gateway,
calc_import;
и поиск таблицы будет последовательно производиться в схемах public, gateway, calc_import.
Соответственно при написании и отладке sql-кода для указания
дополнительной схемы, в которой находятся нужные таблицы, я использую макрос
PgAdmin:
SET search_path TO PUBLIC,$SELECTION$;
где в качестве $SELECTION$ выступает название схемы. Как создать макрос в PgAdmin и как им пользоваться можно прочесть здесь.
2. PgAdmin является самой стабильно работающей GUI
sql-tool для Postgresql, обладающей большим функционалом.
Однако серьезным упущением в этой программе является отсутствие автодополнения при написании запросов. Часто
нужно посмотреть точное имя таблицы, которую собираешься использовать в
запросе. Новички, как правило начинают открывать браузер объектов в интерфейсе программы -
это долго и неудобно. Гораздо быстрее, по-моему - сделать запрос с получением списка всех таблиц нужно схемы, отсортированного в алфавитном порядке. Для этого я и
использую макрос
SELECT *
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema ILIKE ('%' || trim('$SELECTION$') || '%')
ORDER BY TABLE_NAME
Соответственно выделяю наименование схемы, запускаю макрос,
а потом в окне полученных результатов копирую точное название нужной таблицы.