Возможно ли каким-то образом создать псевдонимы (например, Unix alias
) в psql?psql ярлык для часто используемых запросов? (например, псевдоним Unix)
Я имею в виду не SQL FUNCTION, а локальные псевдонимы для облегчения ручных запросов?
Возможно ли каким-то образом создать псевдонимы (например, Unix alias
) в psql?psql ярлык для часто используемых запросов? (например, псевдоним Unix)
Я имею в виду не SQL FUNCTION, а локальные псевдонимы для облегчения ручных запросов?
Почему бы не использовать представление? Может быть, views поможет в вашем случае.
Я не знаю ни о какой возможности. Существует только обходное решение для psql на основе psql переменных, но есть много ограничений - использование параметров для этих запросов затруднено.
postgres=# \set whoami 'SELECT CURRENT_USER;'
postgres=# :whoami
current_user
--------------
pavel
(1 row)
Похоже, что взгляды просто лучше, нет? Я предполагаю, что я ищу (местные псевдонимы) просто не «в духе» администратора db. Я должен просто добавлять некоторые обычные представления всякий раз, когда я настраиваю базу данных. – lajarre
Зависит от того, что вы хотите.Но основное использование представлений - это простота запросов (как правило, упрощение работы с данными) и причина безопасности, поэтому, вероятно, вы бы использовали представления :) –
как насчет использования UDF? Вы можете создать UDF, который возвращает таблицу (набор), тогда вы можете запросить его как это: select * from udf();
Это не так чисто, но это лучше, чем ничего, и оно переносимо. И UDF могут также принимать параметры.
Я хотел что-то, что ничего не хранило в db, но опять же это не «дух» того, как все работает, поэтому нет хорошего ответа. Представления более адаптированы в моем случае, поэтому я приму ответ, говоря о мнениях. – lajarre
Ответ Павла почти правильный, за исключением того, что вы можете использовать параметр по-другому.
после
\set s 'select * from '
\set l ' limit 10;'
Следующая команды
:s agent :l
будет равна
select * from agent limit 10;
Согласно http://www.postgresql.org/docs/9.0/static/app-psql.html
Если аргумент без кавычек начинается с двоеточия (:), он берется как переменная psql , а значение переменной используется вместо аргумента . Если имя переменной окружено одинарными кавычками (например, : 'var'), оно будет экранировано как литерал SQL, и результат будет равен . Если имя переменной окружено двойными кавычками , оно будет экранировано как идентификатор SQL, и результат будет равен .
Вы также можете использовать кавычку для запуска из командной оболочки
Аргументов, заключенные в обратных кавычках (`) берутся из командной строки , который передается оболочке. В качестве значения аргумента берется вывод команды (с удалением любой новой строки ). Вышеупомянутые escape-последовательности также применяются в обратном представлении.
Почему бы не использовать представление? – francs
@francs Не знал об этом, ставил его как ответ! – lajarre