Como obter o nome do banco de dados atual no PostgreSQL?

81

O uso \c <database_name>no PostgreSQL se conectará ao banco de dados nomeado.

Como o nome do banco de dados atual pode ser determinado?

Entrando:

my_db> current_database();

produz:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Amelio Vazquez-Reina
fonte
7
Selecione current_database ()
Mihai
1
Adicione um SELECT antes.
Mihai
4
Você sabe que o prompt my_dbjá informa o banco de dados atual?
A_horse_with_no_name

Respostas:

131

A função current_database()retorna o nome do banco de dados atual:

 SELECT current_database();

É uma função SQL, então você deve chamá-la como parte de uma instrução SQL. O PostgreSQL não suporta funções em execução como consultas independentes e não possui CALLinstruções como outros mecanismos SQL; portanto, você apenas SELECTchama uma função.

Craig Ringer
fonte
34

você pode usar "\ conninfo" no psql

John Duddy
fonte
Da psqlversão 9.1. Isso deve cobrir basicamente todos os psqlclientes que estão por aí hoje em dia.
Dezső
26
\c

imprime algo como

You are now connected to database "foobar" as user "squanderer".

Use isso se você não se importa em criar uma nova conexão, porque é isso que acontece. O \ connect (abreviado como \ c) sem todos os parâmetros criará uma nova conexão idêntica à sua atual. A conexão atual está fechada.

Consulte a especificação do comando \ connect em http://www.postgresql.org/docs/9.3/static/app-psql.html :

Se qualquer um de dbname, nome de usuário, host ou porta for omitido (...), o valor desse parâmetro da conexão anterior será usado.

shful
fonte