如何从 PostgreSQL 中获取当前数据库的名称?

Ame*_*ina 143 postgresql psql

\c <database_name>在 PostgreSQL 中使用将连接到指定的数据库。

如何确定当前数据库的名称?

进入:

my_db> current_database();
Run Code Online (Sandbox Code Playgroud)

产生:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Run Code Online (Sandbox Code Playgroud)

Cra*_*ger 221

该函数current_database()返回当前数据库的名称:

 SELECT current_database();
Run Code Online (Sandbox Code Playgroud)

它是一个 SQL 函数,因此您必须将它作为 SQL 语句的一部分来调用。PostgreSQL 不支持将函数作为独立查询运行,并且没有CALL像其他一些 SQL 引擎那样的语句,因此您只需SELECT调用函数即可。

  • @SteveChavez这是因为SQL标准将`current_user`定义为一个魔术关键字。Postgres 不想扩展关键字集,因此标准中未指定的任何内容都倾向于作为函数添加。 (2认同)

小智 49

你可以在 psql 中使用 "\conninfo"


小智 36

\c
Run Code Online (Sandbox Code Playgroud)

打印出类似的东西

You are now connected to database "foobar" as user "squanderer".
Run Code Online (Sandbox Code Playgroud)

如果您不介意创建新连接,请使用此选项,因为这就是会发生的情况。没有所有参数的\connect(缩写为\c)将创建一个与当前连接相同的新连接。当前连接已关闭。

请参阅http://www.postgresql.org/docs/9.3/static/app-psql.html上的 \connect 命令规范:

如果省略了 dbname、username、host 或 port 中的任何一个 (...),则使用来自先前连接的该参数的值。


小智 15

SELECT * FROM current_catalog;
-- and
SELECT current_catalog;
Run Code Online (Sandbox Code Playgroud)

...两者都可以工作(catalog是数据库的标准 SQL