如何从 psql 列出已安装在数据库或模式中的所有扩展?
也可以看看
查找 PostgreSQL 附带的可用扩展列表
在 psql 那将是
\dx
有关详细信息,请参阅 manual of psql。
在普通 SQL 中执行此操作将是 pg_extension
上的一个选择:
SELECT *
FROM pg_extension;
此外,如果您想知道您的服务器上有哪些扩展可用:SELECT * FROM pg_available_extensions
。
请参阅 pg_available_extensions
和 pg_available_extension_versions
。
此 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/
\dx
)执行的 SQL,请执行 \set ECHO_HIDDEN on
。
只是一个评论,无论您是否按照上面的建议运行,在 psql 中
\dx
或者
select extname from pg_extension ;
请记住,
确保您连接到正确的数据库。由于您的扩展是加载特定于数据库的。根据定义,添加到 template1 数据库的任何扩展都将出现在所有数据库中。
在提取扩展信息之前,先了解一些在后台运行的内容,因为如果您直接使用来自应用程序或驱动程序的查询从 postgresql 中提取此信息,这可能会有所帮助。 \dx
正在从名为 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 的任何其他别名命令.
\dx
是一个 psql 命令,在create extension
功能发布时在 9.0 中引入。所以是的,您还需要升级您的psql
(您应该始终使用与您的数据库版本匹配的psql
版本)select * from pg_extension