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

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

Смотрите также

6 ответов

Решение

В 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

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

Этот 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/

Следующий запрос выводит список установленных расширений и их версий:

      SELECT oid, extname, extversion FROM pg_extension;

Чтобы установить расширение (если оно не существует), выполните следующий запрос:

      CREATE EXTENSION [ IF NOT EXISTS ] extension_name;

Чтобы обновить расширение до более новой версии, используйте следующий запрос:

      ALTER EXTENSION extension_name UPDATE TO 'new_version';

Просто комментарий о том, работаете ли вы, как было предложено выше, в psql либо

\dx

или же

      select extname from pg_extension ;

Имейте в виду, что

  1. Убедитесь, что вы подключены к правильной базе данных. Поскольку ваши расширения загружаются для конкретной базы данных.
  2. Любые расширения, добавленные в базу данных template1, по определению будут отображаться во всех базах данных.

Перед получением информации о расширении немного о том, что работает в фоновом режиме, так как это может быть полезно, если вы используете запрос непосредственно из приложения или драйвера для извлечения этой информации из postgresql. извлекает для вас информацию из комбинации каталогов под названиемpg_extension, pg_namespace, pg_descriptionиregclass.

Войти, вpsqlподсказка, упомянутая ниже:

psql -h localhost -d postgres -U username -E

с-Eпереключатель, который дает вам подробную информацию о скрытых командах, которые использует любой псевдоним. Когда вы находитесь в IN , вы можете просто сделать\dx

что дает вам это:

      ********* QUERY **********
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;
**************************

                 List of installed extensions
  Name   | Version |   Schema   |         Description
---------+---------+------------+------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language

Если бы вы использовали клиент, такой как DBweaver или PGADMIN, то команда косой черты может не работать для вас или даже в случае ORM и т. д. Вот где вы можете использовать вышеизложенное и получить аналогичную информацию о расширении или даже любых других командах псевдонимов postgres. .

Другие вопросы по тегам