Используя psql, как составить список расширений, установленных в базе данных?

Ответы:

363

В PSQL это было бы

\dx

Подробности см. В руководстве: http://www.postgresql.org/docs/current/static/app-psql.html.

Делая это в простом SQL, это будет выбор pg_extension:

SELECT * 
FROM pg_extension

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

a_horse_with_no_name
источник
@SoichiHayashi: тогда вы, вероятно, используете старую версию Postgres
a_horse_with_no_name
Я использую PostgreSQL сервер 9.3.5, но я использую psql клиент 8.4.20, который поставляется с CentOS 6.5. Может быть, мне нужно установить последнюю версию PSQL?
Соичи Хаяси
@SoichiHayashi \dx - это команда psql, которая была введена в 9.0, когда эта create extensionфункция была выпущена. Так что да, вам также нужно обновить свою версию psql(вы всегда должны использовать psqlверсию, соответствующую версии вашей БД)
a_horse_with_no_name
1
Какая ирония. stackoverflow.com/questions/9463318/… Одним из комментариев было то, что такие вопросы (и общая неспособность делать действительно сложные вещи вроде \?) раздражают a_horse_with_no_name: D. Чтобы быть справедливым, этот ответ содержит другую полезную информацию.
Джон Пауэлл
11
Вы могли бы упомянуть полный SQL-запрос для списка:select * from pg_extension
icl7126
82

Кроме того, если вы хотите узнать, какие расширения доступны на вашем сервере: SELECT * FROM pg_available_extensions

Дэйв Глассбороу
источник
5

Этот SQL-запрос дает вывод, похожий на \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;

Благодаря https://blog.dbi-services.com/listing-the-extensions-available-in-postgresql/

hit3k
источник