¿Cómo obtener el nombre de la base de datos actual desde PostgreSQL?

81

El uso \c <database_name>en PostgreSQL se conectará a la base de datos nombrada.

¿Cómo se puede determinar el nombre de la base de datos actual?

Entrando:

my_db> current_database();

produce:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Amelio Vazquez-Reina
fuente
77
seleccione current_database ()
Mihai
1
Agregue un SELECCIONAR antes.
Mihai
44
¿Sabes que el mensaje my_dbya te dice la base de datos actual?
a_horse_with_no_name

Respuestas:

131

La función current_database()devuelve el nombre de la base de datos actual:

 SELECT current_database();

Es una función SQL, por lo que debe llamarla como parte de una instrucción SQL. PostgreSQL no admite funciones en ejecución como consultas independientes, y no tiene una CALLdeclaración como otros motores SQL, por lo que solo se usa SELECTpara llamar a una función.

Craig Ringer
fuente
34

puedes usar "\ conninfo" en psql

John Duddy
fuente
Desde la psqlversión 9.1. Sin psqlembargo, eso debería cubrir básicamente a todos los clientes que existen actualmente.
dezso
26
\c

imprime algo como

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

Use esto si no le importa crear una nueva conexión, porque esto es lo que sucede. El \ connect (acortado como \ c) sin todos los parámetros creará una nueva conexión idéntica a la actual. La conexión actual está cerrada.

Consulte las especificaciones del comando \ connect en http://www.postgresql.org/docs/9.3/static/app-psql.html :

Si se omite cualquiera de dbname, nombre de usuario, host o puerto (...), se utiliza el valor de ese parámetro de la conexión anterior.

tímido
fuente