在更多情况下,如何在 psql 中启用自动补全?

How can I enable autocompletion in psql in more cases?

我是 RDBMS 的新手。

Postgres 帮助我自动完成,但它不适用于 SELECT 子句中的 FROMWHEREDISTINCT

当然是已经连接上数据库了。还有schema和table可以查询。

例如,当我尝试输入以下查询时,SELECT 之后的所有关键字都不会自动完成;

SELECT DISTINCT district FROM city WHERE countrycode = 'JPN';

但是,我手动输入完后运行就没有报错了。 Postgres returns 结果正常。

尽管如此,它在其他子句中有效,例如 CREATEALTER

我怎样才能自动完成这些? 谢谢。

SELECTFROM 之间的关键字(在您的示例中为 "distinct" 和 "district")无法自动完成,因为解析器不知道哪些列、关键字、您所指的函数名称等。如果你键入 SELECT DI 并按下 Tab,解析器将不知道你是否试图完成 DISTINCT 关键字或 DISTRICT 列名(记住在 Postgres 中, 单词以不区分大小写的方式解释,除非使用双引号 ")。在 FROM 关键字之后,解析器知道您可能会输入 table 名称,因此它能够支持制表符完成。

披露:我是一名 EnterpriseDB (EDB) 员工

就列名而言,richyen 的回答是正确的。

然而,PostgreSQL 当然可以为 DISTINCT 提供自动完成功能。 DISTINCT 是 SQL 中的保留关键字,不能用作列名,除非用双引号引起来。

DISTINCT没有自动完成的原因是还没有人实现它。