使用psql如何列出数据库中安装的扩展?

ARV*_*ARV 203 postgresql psql postgresql-extensions

如何从psql列出已安装在数据库或模式中的所有扩展?

也可以看看

a_h*_*ame 308

在psql中即可

\dx
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅手册:http://www.postgresql.org/docs/current/static/app-psql.html

在普通SQL中执行它将是一个选择pg_extension:

SELECT * 
FROM pg_extension
Run Code Online (Sandbox Code Playgroud)

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

  • 你可以提一下列表的完整SQL查询:`select*from pg_extension` (11认同)

Dav*_*row 70

此外,如果您想知道服务器上可用的扩展名: SELECT * FROM pg_available_extensions


Neb*_*tic 14

以下查询输出已安装的扩展及其版本的列表:

SELECT oid, extname, extversion FROM pg_extension;
Run Code Online (Sandbox Code Playgroud)
奥德 扩展名 外向性
13763 plpgsql 1.0
18536 http 1.5
22466 字典xsyn 1.0

如果您想知道哪些其他扩展及其版本可供安装,请运行以下查询:

SELECT name, default_version, installed_version 
  FROM pg_available_extensions;
Run Code Online (Sandbox Code Playgroud)
姓名 默认版本 安装版本
字典xsyn 1.0 1.0
1.4 无效的
PG加密 1.3 无效的
plpgsql 1.0 1.0

要安装扩展(如果它不存在),请运行以下查询:

CREATE EXTENSION [ IF NOT EXISTS ] extension_name;
Run Code Online (Sandbox Code Playgroud)

要将扩展升级到较新版本,请使用以下查询:

ALTER EXTENSION extension_name UPDATE TO 'new_version';
Run Code Online (Sandbox Code Playgroud)


Sum*_*t S 12

只是评论一下您是否按照上面的建议运行,在 psql 中

\dx

或者

select extname from pg_extension ;
Run Code Online (Sandbox Code Playgroud)

请记住

  1. 确保您连接到正确的数据库。由于您的扩展是加载特定于数据库的。
  2. 根据定义,添加到 template1 数据库的任何扩展名都会出现在所有数据库中。


hit*_*t3k 11

此 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;
Run Code Online (Sandbox Code Playgroud)

感谢https://blog.dbi-services.com/listing-the-extensions-available-in-postgresql/

  • *psql(1)* 反斜杠命令是在 SQL 中实现的;它们就像一个别名。要查看为每个反斜杠命令(例如“\dx”)执行的 SQL,请执行“\set ECHO_HIDDEN on”。 (5认同)

Raj*_*rma 7

在提取扩展信息之前,先了解一下后台运行的一些内容,因为如果您直接从应用程序或驱动程序使用查询来从 postgresql 提取此信息,这可能会很有帮助。 正在从名为和 的\dx目录组合中为您提取信息。pg_extension, pg_namespace, pg_descriptionregclass

登录,进入psql下面提到的提示:

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

带有一个-E开关,可以为您提供任何别名正在使用的隐藏命令的详细信息。一旦你进入,你可以简单地做一个\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
Run Code Online (Sandbox Code Playgroud)

如果您要使用像 DBweaver 或 PGADMIN 这样的客户端,那么斜杠命令可能对您不起作用,甚至在 ORM 等情况下也是如此。您可以使用上面的命令并获取有关扩展的类似信息,甚至是 postgres 的任何其他别名命令。

  • 很高兴知道 -E 标志。 (2认同)