Comment obtenir le nom de la base de données actuelle depuis PostgreSQL?

81

Utiliser \c <database_name>dans PostgreSQL se connectera à la base de données nommée.

Comment déterminer le nom de la base de données actuelle?

Entrer:

my_db> current_database();

produit:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Amelio Vazquez-Reina
la source
7
select current_database ()
Mihai
1
Ajouter un SELECT avant.
Mihai
4
Vous savez que l'invite my_dbvous indique déjà la base de données actuelle?
a_horse_with_no_name

Réponses:

131

La fonction current_database()renvoie le nom de la base de données actuelle:

 SELECT current_database();

C'est une fonction SQL, vous devez donc l'appeler dans le cadre d'une instruction SQL. PostgreSQL ne supporte pas les fonctions en cours d'exécution en tant que requêtes autonomes et n'a pas d' CALLinstruction comme certains autres moteurs SQL, vous utilisez donc simplement SELECTpour appeler une fonction.

Craig Ringer
la source
34

vous pouvez utiliser "\ conninfo" dans psql

John Duddy
la source
À partir de la psqlversion 9.1. Cela devrait couvrir essentiellement tous les psqlclients là-bas ces jours-ci, cependant.
dezso
26
\c

imprime quelque chose comme

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

Utilisez ceci si la création d’une nouvelle connexion ne vous dérange pas, car c’est ce qui se passe. Le \ connect (abrégé en \ c) sans tous les paramètres créera une nouvelle connexion identique à votre connexion actuelle. La connexion actuelle est fermée.

Voir la spécification de la commande \ connect sur http://www.postgresql.org/docs/9.3/static/app-psql.html :

Si l'un des noms dbname, username, host ou port est omis (...), la valeur de ce paramètre de la connexion précédente est utilisée.

shful
la source