Czy można w jakiś sposób utworzyć aliasy (np. Unix alias
) w psql?Skrót psql dla najczęściej używanych zapytań? (jak "alias" Unixa)
Mam na myśli, nie SQL FUNCTION, ale lokalne aliasy, aby ułatwić ręczne zapytania?
Czy można w jakiś sposób utworzyć aliasy (np. Unix alias
) w psql?Skrót psql dla najczęściej używanych zapytań? (jak "alias" Unixa)
Mam na myśli, nie SQL FUNCTION, ale lokalne aliasy, aby ułatwić ręczne zapytania?
Dlaczego nie używać widoku? Może być views pomoże w twojej sprawie.
Nie wiem o żadnej możliwości. Jest tylko obejście dla psql na podstawie zmiennych psql, ale jest wiele ograniczeń - używanie parametrów dla tych zapytań jest trudne.
postgres=# \set whoami 'SELECT CURRENT_USER;'
postgres=# :whoami
current_user
--------------
pavel
(1 row)
Zasadniczo wygląda na to, że widoki są po prostu lepsze, nie? Domyślam się, że to, czego szukam (lokalne aliasy), nie jest "zgodne z duchem" db admin. Powinienem dodać zwykłe widoki za każdym razem, gdy konfiguruję bazę danych. – lajarre
Zależy od tego, co chcesz.Ale główne użycie widoków to prostota zapytań (ogólnie uproszczenie pracy z danymi) i powód bezpieczeństwa, więc prawdopodobnie użyłbyś widoków :) –
Jak korzystać z UDF? Możesz utworzyć UDF, który zwraca tabelę (zestaw), a następnie możesz zapytać go w ten sposób: wybierz * z udf();
To nie jest tak czyste, ale jest lepsze niż nic i jest przenośne. UDF mogą również przyjmować parametry.
Chciałem czegoś, co nie zapisuje niczego w db, ale znowu to nie jest "Duch" tego, jak rzeczy działają, więc nie ma dobrej odpowiedzi. Widoki są bardziej dostosowane w moim przypadku, więc przyjmuję odpowiedź mówiącą o poglądach. – lajarre
Odpowiedź Pavel jest prawie poprawna, z wyjątkiem tego, że możesz użyć parametru w inny sposób.
po
\set s 'select * from '
\set l ' limit 10;'
Poniżej polecenia
:s agent :l
wyniesie do
select * from agent limit 10;
Według http://www.postgresql.org/docs/9.0/static/app-psql.html
Jeśli niecytowany argument rozpoczyna się dwukropkiem (:), jest on traktowany jako zmienna psql , a wartość zmiennej jest używana jako argument . Jeśli nazwa zmiennej jest otoczona pojedynczymi cudzysłowami (np. : "var"), zostanie ona zmieniona jako literał SQL, a jako argument zostanie użyty . Jeśli nazwa zmiennej jest otoczona podwójnymi cytatami , zostanie zignorowana jako identyfikator SQL, a wynikiem będzie używany jako argument.
Można również użyć backquote uruchomić polecenie powłoki
argumentów, które są zamknięte w małe cudzysłowy (`) są traktowane jako polecenia linii, która jest przekazywana do powłoki. Wynik polecenia (z usuniętym końcowym znakiem nowej linii ) jest traktowany jako wartość argumentu. Powyższe sekwencje specjalne w postaci mają również zastosowanie w podstronach.
Dlaczego nie użyć widoku? – francs
@francs Nie wiedziałem o tym, ułóż to jako odpowiedź! – lajarre