在更多情况下,如何在 psql 中启用自动补全?
How can I enable autocompletion in psql in more cases?
我是 RDBMS 的新手。
Postgres 帮助我自动完成,但它不适用于 SELECT
子句中的 FROM
、WHERE
和 DISTINCT
。
当然是已经连接上数据库了。还有schema和table可以查询。
例如,当我尝试输入以下查询时,SELECT
之后的所有关键字都不会自动完成;
SELECT DISTINCT district FROM city WHERE countrycode = 'JPN';
但是,我手动输入完后运行就没有报错了。 Postgres returns 结果正常。
尽管如此,它在其他子句中有效,例如 CREATE
和 ALTER
。
我怎样才能自动完成这些?
谢谢。
SELECT
和 FROM
之间的关键字(在您的示例中为 "distinct" 和 "district")无法自动完成,因为解析器不知道哪些列、关键字、您所指的函数名称等。如果你键入 SELECT DI
并按下 Tab
,解析器将不知道你是否试图完成 DISTINCT
关键字或 DISTRICT
列名(记住在 Postgres 中, 单词以不区分大小写的方式解释,除非使用双引号 "
)。在 FROM
关键字之后,解析器知道您可能会输入 table 名称,因此它能够支持制表符完成。
披露:我是一名 EnterpriseDB (EDB) 员工
就列名而言,richyen 的回答是正确的。
然而,PostgreSQL 当然可以为 DISTINCT
提供自动完成功能。 DISTINCT
是 SQL 中的保留关键字,不能用作列名,除非用双引号引起来。
DISTINCT
没有自动完成的原因是还没有人实现它。
我是 RDBMS 的新手。
Postgres 帮助我自动完成,但它不适用于 SELECT
子句中的 FROM
、WHERE
和 DISTINCT
。
当然是已经连接上数据库了。还有schema和table可以查询。
例如,当我尝试输入以下查询时,SELECT
之后的所有关键字都不会自动完成;
SELECT DISTINCT district FROM city WHERE countrycode = 'JPN';
但是,我手动输入完后运行就没有报错了。 Postgres returns 结果正常。
尽管如此,它在其他子句中有效,例如 CREATE
和 ALTER
。
我怎样才能自动完成这些? 谢谢。
SELECT
和 FROM
之间的关键字(在您的示例中为 "distinct" 和 "district")无法自动完成,因为解析器不知道哪些列、关键字、您所指的函数名称等。如果你键入 SELECT DI
并按下 Tab
,解析器将不知道你是否试图完成 DISTINCT
关键字或 DISTRICT
列名(记住在 Postgres 中, 单词以不区分大小写的方式解释,除非使用双引号 "
)。在 FROM
关键字之后,解析器知道您可能会输入 table 名称,因此它能够支持制表符完成。
披露:我是一名 EnterpriseDB (EDB) 员工
就列名而言,richyen 的回答是正确的。
然而,PostgreSQL 当然可以为 DISTINCT
提供自动完成功能。 DISTINCT
是 SQL 中的保留关键字,不能用作列名,除非用双引号引起来。
DISTINCT
没有自动完成的原因是还没有人实现它。