Bagaimana cara mengganti basis data di psql?

1082

Di MySQL , saya menggunakanuse database_name;

Apa yang psqlsetara?

Blankman
sumber
1
OK, jadi ini tentang psql, front-end untuk PostgreSQL?
Peter Mortensen

Jawaban:

1656

Di PostgreSQL, Anda dapat menggunakan \connectmeta-command dari alat klien psql:

\connect DBNAME

atau singkatnya:

\c DBNAME
Will Hartung
sumber
126
+1: Ini HANYA perintah psql, di Postgres sendiri, tidak ada cara untuk "beralih". Sebenarnya, psql tidak "beralih" dalam konteks MySQL, hanya menutup satu koneksi dan membuka yang lain.
rfusca
12
Jadi tidak ada kesempatan untuk melakukannya dengan SQL?
Borys
5
Jadi bisakah ini bekerja di antara pernyataan SQL dalam .sqlfile? misalnya, bisakah saya CREATE DATABASE mydb;mengikuti \connect mydb?
J86
1
@ Ciwan Saya cukup yakin Anda tidak dapat memasukkan psqlperintah dalam file skrip SQL.
Kenny Evitt
183

Anda dapat terhubung ke database dengan \c <database>atau \connect <database>.

meagar
sumber
98

Pada prompt PSQL, Anda dapat melakukan:

\connect (or \c) dbname
Michael Goldshteyn
sumber
31

Anda dapat memilih database saat terhubung dengan psql. Ini berguna saat menggunakannya dari skrip:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Manel Clos
sumber
4
Terima kasih, saya menjadi gila ... :)
Richard
10

\luntuk database, \cDatabaseName untuk beralih ke db \dfuntuk prosedur yang disimpan dalam database tertentu

Ambrish Rajput
sumber
9

Menggunakan meta-command psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(lihat dokumentasi ).

Contoh: \c MyDatabase

Perhatikan bahwa perintah \cdan \connectmeta adalah case-sensitive .

Franck Dernoncourt
sumber
7

Gunakan pernyataan di bawah ini untuk beralih ke database berbeda yang berada di dalam RDMS postgreSQL Anda

\c databaseName
Bilal Mahmood
sumber
1

Jika Anda ingin beralih ke database tertentu saat memulai, coba

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;

Secara default, Postgres berjalan di port 5432. Jika berjalan di yang lain, pastikan untuk melewatkan port di baris perintah.

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p2345 vigneshdb;

Dengan alias sederhana, kita bisa membuatnya berguna.

Buat alias di .bashrcatau.bash_profile

function psql()
{
    db=vigneshdb
    if [ "$1" != ""]; then
            db=$1
    fi
    /Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p5432 $1
}

Jalankan psqldi baris perintah, itu akan beralih ke database default; psql anotherdb, itu akan beralih ke db dengan nama dalam argumen, saat startup.

Vignesh Raja
sumber
1

Meskipun tidak secara eksplisit dinyatakan dalam pertanyaan, tujuannya adalah untuk terhubung ke skema / database tertentu.

Pilihan lain adalah untuk langsung terhubung ke skema. Contoh:

sudo -u postgres psql -d my_database_name

Sumber dari man psql:

-d dbname
--dbname=dbname
   Specifies the name of the database to connect to. This is equivalent to specifying dbname as the first non-option argument on the command line.

   If this parameter contains an = sign or starts with a valid URI prefix (postgresql:// or postgres://), it is treated as a conninfo string. See Section 31.1.1, Connection Strings”, in the
   documentation for more information.
AlikElzin-kilaka
sumber
1

Anda juga dapat terhubung ke database dengan PERAN yang berbeda seperti berikut.

\connect DBNAME ROLENAME;

atau

\c DBNAME ROLENAME;
Abhishek
sumber
0

Anda dapat terhubung menggunakan

\ c dbname

Jika Anda ingin melihat semua perintah yang mungkin untuk POSTGRESQL atau SQL ikuti langkah-langkah ini:

  1. rails dbconsole (Anda akan rederict ke database ENV Anda saat ini)

  2. \ (Untuk perintah POSTGRESQL)

atau

  1. \ h (Untuk perintah SQL)

  2. Tekan Q untuk Keluar

Lakhani Aliraza
sumber
-11

Seperti yang disebutkan dalam jawaban lain, Anda perlu mengubah koneksi untuk menggunakan database yang berbeda.

Postgres bekerja dengan skema. Anda dapat memiliki banyak skema dalam satu basis data. Jadi, jika Anda bekerja dalam database yang sama, dan ingin mengubah skema, Anda dapat melakukan:

SET SCHEMA 'schema_name';

pengguna3545770
sumber
9
Ini salah. Ini hanya akan mengubah skema yang digunakan di jalur pencarian. Sebuah database yang berisi beberapa skema ta.
Semua Pekerja Penting
@ cpburnz Saya setuju dengan Anda
MangEngkus
1
Selain komentar @ cpburnz, SET SCHEMAdigunakan sebagai SET SCHEMA 'schema_name'tidak SET SCHEMA 'database_name'. Jadi ini adalah cara SQL untuk mengubah skema bukan basis data. Ini juga mirip dengan SET search_path TO schema_name. Lihat dokumentasi di sini atau di sini .
Ibrahim Dauda