Perintah "gunakan database_name" di PostgreSQL

366

Saya pemula untuk PostgreSQL.

Saya ingin terhubung ke database lain dari editor query Postgres - seperti USEperintah MySQL atau MS SQL Server.

Saya menemukan \c databasenamedengan mencari di Internet, tetapi hanya berjalan di psql . Ketika saya mencobanya dari editor query PostgreSQL saya mendapatkan kesalahan sintaksis.

Saya harus mengubah database dengan pgscripting. Adakah yang tahu bagaimana melakukannya?

sam
sumber
Kemungkinan duplikat dari Bagaimana cara mengganti basis data di psql?
AlikElzin-kilaka
Pilihan lain adalah untuk langsung terhubung ke skema. Contoh: sudo -u postgres psql -d my_database_name. Sumber
AlikElzin-kilaka

Jawaban:

382

Ketika Anda mendapatkan koneksi ke PostgreSQLitu selalu ke database tertentu. Untuk mengakses database yang berbeda, Anda harus mendapatkan koneksi baru.

Menggunakan \cdalam psql menutup koneksi lama dan memperoleh yang baru, menggunakan database dan / atau kredensial yang ditentukan. Anda mendapatkan proses back-end yang sama sekali baru dan segalanya.

kgrittn
sumber
Terima kasih kgrittn untuk bimbingan Anda yang berharga. Bisakah Anda memberi tahu saya bagaimana saya dapat membuat koneksi baru ke database dan menutup sebelumnya dengan menggunakan permintaan pgscript?
sam
Saya tidak terbiasa dengan pgscript. Jika itu bahasa tempat Anda menulis fungsi, jawabannya adalah tidak bisa dilakukan. Mungkin Anda harus mempertimbangkan menempatkan tabel dalam skema yang berbeda, bukan database yang berbeda ?
kgrittn
2
Kueri tidak dapat mengubah database di PostgreSQL.
kgrittn
Terima kasih kgrittn untuk semua bantuan Anda .. :)
sam
8
Jika saya tidak salah, database di MySQL lebih mirip dengan skema di PostgreSQL - Anda dapat beralih di antara mereka, tetapi DB di PostgreSQL adalah ballgame yang sama sekali berbeda.
buka
213

Anda harus menentukan basis data yang akan digunakan pada koneksi; jika Anda ingin menggunakan psql untuk skrip Anda, Anda dapat menggunakan "\ c name_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

Pada titik ini Anda mungkin melihat output berikut

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

Perhatikan bagaimana perubahan prompt. Ceria, baru saja bergegas mencari ini juga, terlalu sedikit informasi tentang postgreSQL dibandingkan dengan MySQL dan sisanya dalam pandangan saya.

Eugene
sumber
25

Di pgAdmin Anda juga dapat menggunakan

SET search_path TO your_db_name;

Bart De Boeck
sumber
Itu bekerja terima kasih
YouAreAwesome
9

Masalah mendasar saat bermigrasi dari MySQL yang saya hadapi adalah, saya memikirkan istilah yang databasesama di PostgreSQL juga, tetapi tidak. Jadi jika kita akan mengganti database dari aplikasi kita atau pgAdmin, hasilnya tidak akan seperti yang diharapkan. Seperti dalam kasus saya, kami memiliki skema terpisah (Mengingat terminologi PostgreSQL di sini.) Untuk setiap pelanggan dan skema admin terpisah. Jadi dalam aplikasi, saya harus beralih antar skema.

Untuk ini, kita bisa menggunakan SET search_pathperintah. Ini memang mengganti skema saat ini ke nama skema yang ditentukan untuk sesi saat ini.

contoh:

SET search_path = different_schema_name;

Ini mengubah schema current ke skema yang ditentukan untuk sesi. Untuk mengubahnya secara permanen, kita harus membuat perubahan pada postgresql.conffile.

VPK
sumber
4

Gunakan commad ini saat terhubung pertama kali psql

=# psql <databaseName> <usernamePostgresql>
Sukma Saputra
sumber