web-dev-qa-db-ja.com

PostgreSQL内から現在のデータベースの名前を取得する方法は?

PostgreSQLで\c <database_name>を使用すると、指定したデータベースに接続します。

現在のデータベースの名前はどのように決定できますか?

入力:

my_db> current_database();

生成する:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
103

関数current_database()は、現在のデータベースの名前を返します。

 SELECT current_database();

これはSQL関数なので、SQLステートメントの一部として呼び出す必要があります。 PostgreSQLは関数の実行をスタンドアロンクエリとしてサポートしておらず、他のSQLエンジンのようなCALLステートメントがないため、SELECTを使用して関数を呼び出すだけです。

159
Craig Ringer

あなたはpsqlで「\ conninfo」を使うことができます

36
John Duddy
\c

のようなものを印刷します

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

これは実際に行われることなので、新しい接続を作成してもかまわない場合に使用します。すべてのパラメーターなしで\ connect(\ cと短縮)は、現在の接続と同じ新しい接続を作成します。現在の接続は閉じられています。

http://www.postgresql.org/docs/9.3/static/app-psql.html の\ connectコマンドの仕様を参照してください:

Dbname、username、Hostまたはportのいずれかが省略されている場合(...)は、以前の接続からのそのパラメーターの値が使用されます。

32
shful
SELECT * FROM current_catalog;
-- and
SELECT current_catalog;

...両方とも動作します( catalogはデータベースの標準SQL

11
nikooters