使用 psql 如何列出安装在数据库中的扩展?
Posted
技术标签:
【中文标题】使用 psql 如何列出安装在数据库中的扩展?【英文标题】:Using psql how do I list extensions installed in a database? 【发布时间】:2014-03-15 00:43:03 【问题描述】:如何从 psql 列出已安装在数据库或架构中的所有扩展?
另见
Finding a list of available extensions that PostgreSQL ships with【问题讨论】:
【参考方案1】:在 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
版本)
多么讽刺。 ***.com/questions/9463318/… 其中一个 cmets 是这样的问题(以及一般无法做真正困难的事情,如 \?)会惹恼 a_horse_with_no_name :D。公平地说,这个答案包含其他有用的信息。
您可能会提到该列表的完整 SQL 查询:select * from pg_extension
【参考方案2】:
另外,如果您想知道您的服务器上有哪些扩展可用:SELECT * FROM pg_available_extensions
。
请参阅 pg_available_extensions
和 pg_available_extension_versions
。
【讨论】:
【参考方案3】:这个 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
。以上是关于使用 psql 如何列出安装在数据库中的扩展?的主要内容,如果未能解决你的问题,请参考以下文章