Bagaimana cara mendapatkan nama database saat ini dari dalam PostgreSQL?

81

Menggunakan \c <database_name>di PostgreSQL akan terhubung ke database bernama.

Bagaimana nama basis data saat ini dapat ditentukan?

Memasuki:

my_db> current_database();

menghasilkan:

ERROR:  syntax error at or near "current_database"
LINE 1: current_database();
Amelio Vazquez-Reina
sumber
7
pilih current_database ()
Mihai
1
Tambahkan SELECT sebelumnya.
Mihai
4
Anda tahu bahwa prompt my_dbsudah memberi tahu Anda database saat ini?
a_horse_with_no_name

Jawaban:

131

Fungsi current_database()mengembalikan nama database saat ini:

 SELECT current_database();

Ini adalah fungsi SQL, jadi Anda harus menyebutnya sebagai bagian dari pernyataan SQL. PostgreSQL tidak mendukung fungsi yang berjalan sebagai permintaan mandiri, dan tidak memiliki CALLpernyataan seperti beberapa mesin SQL lainnya, jadi Anda hanya SELECTperlu memanggil fungsi.

Craig Ringer
sumber
34

Anda dapat menggunakan "\ conninfo" di psql

John Duddy
sumber
Dari psqlversi 9.1. Yang pada dasarnya harus mencakup semua psqlklien di luar sana hari ini.
dezso
26
\c

mencetak sesuatu seperti

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

Gunakan ini jika Anda tidak keberatan membuat koneksi baru, karena inilah yang terjadi. \ Connect (disingkat \ c) tanpa semua parameter akan membuat koneksi baru yang identik dengan koneksi Anda saat ini. Koneksi saat ini ditutup.

Lihat \ menghubungkan spesifikasi perintah di http://www.postgresql.org/docs/9.3/static/app-psql.html :

Jika ada dbname, nama pengguna, host atau port dihilangkan (...), nilai parameter itu dari koneksi sebelumnya digunakan.

shful
sumber