Za pomocą psql jak wyświetlić listę rozszerzeń zainstalowanych w bazie danych?

Odpowiedzi:

363

W psql byłoby to

\dx

Szczegółowe informacje można znaleźć w instrukcji: http://www.postgresql.org/docs/current/static/app-psql.html

Robiąc to w zwykłym SQL, byłby to wybór na pg_extension:

SELECT * 
FROM pg_extension

http://www.postgresql.org/docs/current/static/catalog-pg-extension.html

koń bez imienia
źródło
@SoichiHayashi: prawdopodobnie używasz starej wersji Postgres
a_horse_w_na_nazwie
Korzystam z serwera PostgreSQL 9.3.5, ale używam klienta psql 8.4.20, który jest dostarczany z CentOS 6.5. Może muszę zainstalować najnowszą wersję psql?
Soichi Hayashi
@ SoichiHayashi \dx to komenda psql, która została wprowadzona wraz z wersją 9.0, kiedy create extensionfunkcja została wydana. Więc tak, musisz również zaktualizować swój psql(powinieneś zawsze używać psqlwersji, która pasuje do twojej wersji DB)
a_horse_w_na_nazwie
1
Jak ironicznie. stackoverflow.com/questions/9463318/... Jednym z komentarzy było to, że takie pytania (i ogólna niezdolność do robienia naprawdę trudnych rzeczy, takich jak \?) denerwuje a_horse_w_nazwie: D. Szczerze mówiąc, ta odpowiedź zawiera inne przydatne informacje.
John Powell,
11
możesz wspomnieć o pełnym zapytaniu SQL dla listy:select * from pg_extension
icl7126,
82

Dodatkowo, jeśli chcesz wiedzieć, które rozszerzenia są dostępne na twoim serwerze: SELECT * FROM pg_available_extensions

Dave Glassborow
źródło
5

To zapytanie SQL daje dane wyjściowe podobne do \dx:

SELECT e.extname AS "Name", e.extversion AS "Version", n.nspname AS "Schema", c.description AS "Description" 
FROM pg_catalog.pg_extension e 
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace 
LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass 
ORDER BY 1;

Dzięki https://blog.dbi-services.com/listing-the-extensions-available-in-postgresql/

hit3k
źródło