ChatGPT解决这个技术问题 Extra ChatGPT

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

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

也可以看看

查找 PostgreSQL 附带的可用扩展列表


l
laurent

在 psql 那将是

\dx

有关详细信息,请参阅 manual of psql

在普通 SQL 中执行此操作将是 pg_extension 上的一个选择:

SELECT * 
FROM pg_extension;

@SoichiHayashi:那么您可能使用的是旧的 Postgres 版本
我正在运行 PostgreSQL 服务器 9.3.5,但我使用的是 CentOS 6.5 附带的 psql 客户端 8.4.20。也许我需要安装最新版本的 psql?
@SoichiHayashi \dx 是一个 psql 命令,在 create extension 功能发布时在 9.0 中引入。所以是的,您还需要升级您的 psql(您应该始终使用与您的数据库版本匹配的 psql 版本)
多讽刺。 stackoverflow.com/questions/9463318/…其中一条评论是这样的问题(以及一般无法做真正困难的事情,如 \?)会惹恼 a_horse_with_no_name :D。公平地说,这个答案包含其他有用的信息。
您可能会提到列表的完整 SQL 查询:select * from pg_extension
H
Hans Ginzel

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

请参阅 pg_available_extensionspg_available_extension_versions


h
hit3k

此 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/


psql(1) 反斜杠命令在 SQL 中实现;他们就像一个别名。要查看为每个反斜杠命令(例如 \dx)执行的 SQL,请执行 \set ECHO_HIDDEN on
S
Sumit S

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

\dx

或者

select extname from pg_extension ;

请记住,

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


R
Raj Verma

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

登录到下面提到的 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 的任何其他别名命令.