Как получить имя текущей базы данных из PostgreSQL?

81

Использование \c <database_name>в PostgreSQL будет подключаться к указанной базе данных.

Как определить имя текущей базы данных?

Ввод:

my_db> current_database();

производит:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Амелио Васкес-Рейна
источник
7
выберите current_database ()
Михай
1
Добавьте SELECT раньше.
Михай
4
Вы знаете, что подсказка my_dbуже сообщает вам текущую базу данных?
a_horse_with_no_name

Ответы:

131

Функция current_database()возвращает имя текущей базы данных:

 SELECT current_database();

Это функция SQL, поэтому вы должны вызывать ее как часть оператора SQL. PostgreSQL не поддерживает запуск функций в качестве автономных запросов и не имеет CALLоператоров, как некоторые другие механизмы SQL, поэтому вы просто используете SELECTдля вызова функции.

Крейг Рингер
источник
34

Вы можете использовать "\ conninfo" в PSQL

Джон Дадди
источник
С psqlверсии 9.1. Это должно охватывать в основном всех psqlклиентов в эти дни, хотя.
Дезсо
26
\c

печатает что-то вроде

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

Используйте это, если вы не против создания нового соединения, потому что это то, что происходит. \ Connect (сокращенно как \ c) без всех параметров создаст новое соединение, идентичное вашему текущему. Текущее соединение закрыто.

См. Спецификацию команды \ connect на http://www.postgresql.org/docs/9.3/static/app-psql.html :

Если какие-либо из dbname, username, host или port опущены (...), используется значение этого параметра из предыдущего соединения.

shful
источник