2013-04-25 3 views
5

Возможно ли каким-то образом создать псевдонимы (например, Unix alias) в psql?psql ярлык для часто используемых запросов? (например, псевдоним Unix)

Я имею в виду не SQL FUNCTION, а локальные псевдонимы для облегчения ручных запросов?

+2

Почему бы не использовать представление? – francs

+0

@francs Не знал об этом, ставил его как ответ! – lajarre

ответ

1

Почему бы не использовать представление? Может быть, views поможет в вашем случае.

8

Я не знаю ни о какой возможности. Существует только обходное решение для psql на основе psql переменных, но есть много ограничений - использование параметров для этих запросов затруднено.

postgres=# \set whoami 'SELECT CURRENT_USER;' 
postgres=# :whoami 
current_user 
-------------- 
pavel 
(1 row) 
+0

Похоже, что взгляды просто лучше, нет? Я предполагаю, что я ищу (местные псевдонимы) просто не «в духе» администратора db. Я должен просто добавлять некоторые обычные представления всякий раз, когда я настраиваю базу данных. – lajarre

+0

Зависит от того, что вы хотите.Но основное использование представлений - это простота запросов (как правило, упрощение работы с данными) и причина безопасности, поэтому, вероятно, вы бы использовали представления :) –

1

как насчет использования UDF? Вы можете создать UDF, который возвращает таблицу (набор), тогда вы можете запросить его как это: select * from udf();

Это не так чисто, но это лучше, чем ничего, и оно переносимо. И UDF могут также принимать параметры.

+1

Я хотел что-то, что ничего не хранило в db, но опять же это не «дух» того, как все работает, поэтому нет хорошего ответа. Представления более адаптированы в моем случае, поэтому я приму ответ, говоря о мнениях. – lajarre

2

Ответ Павла почти правильный, за исключением того, что вы можете использовать параметр по-другому.

после

\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-последовательности также применяются в обратном представлении.