PostgreSQL'de “veritabanı_adı kullan” komutu


366

PostgreSQL'e yeni başladım.

Postgres sorgu düzenleyicisinden başka bir veritabanına bağlanmak istiyorum - USEMySQL veya MS SQL Server komutu gibi .

\c databasenameİnternette arama yaparak buldum , ama sadece psql üzerinde çalışır . PostgreSQL sorgu düzenleyicisinden denediğimde bir sözdizimi hatası alıyorum.

Veritabanı pgscripting ile değiştirmek zorunda. Bunun nasıl yapıldığını bilen var m?



Başka bir seçenek, şemaya doğrudan bağlanmaktır. Örnek: sudo -u postgres psql -d my_database_name. Kaynak
AlikElzin-kilaka

Yanıtlar:


381

Bir bağlantı aldığınızda PostgreSQLher zaman belirli bir veritabanına olur. Farklı bir veritabanına erişmek için yeni bir bağlantı almanız gerekir.

\cPsql içinde kullanmak eski bağlantıyı kapatır ve belirtilen veritabanını ve / veya kimlik bilgilerini kullanarak yeni bir bağlantı kurar. Tamamen yeni bir arka plan süreci ve her şey elde edersiniz.


Değerli rehberiniz için teşekkürler kgrittn.Pgscript sorgusunu kullanarak veritabanına nasıl yeni bağlantı kurabileceğimi ve öncekini nasıl kapatabileceğimi söyleyebilir misiniz?
sam

Ben pgscript'e aşina değilim. Eğer bu fonksiyonları yazdığınız bir dildeyse, bunun cevabı yapılamaz. Belki de tabloları farklı veritabanları yerine farklı şemalara koymayı düşünmelisiniz ?
kgrittn

2
Bir sorgu PostgreSQL veritabanını değiştiremez.
kgrittn

Tüm yardımlarınız için teşekkürler kgrittn .. :)
sam

8
Yanılmıyorsam, MySQL'deki veritabanları PostgreSQL'deki şemalara daha çok benziyor - bunlar arasında geçiş yapabilirsiniz, ancak PostgreSQL'deki DB'ler tamamen farklı bir top oyunudur.
12'de

213

Connect'te kullanılacak veritabanını belirtmeniz gerekir; betiğiniz için psql kullanmak istiyorsanız "\ c name_database" kullanabilirsiniz

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

Bu noktada aşağıdaki çıktıyı görebilirsiniz

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

İstemin nasıl değiştiğine dikkat edin. Şerefe, bu da sadece acele ediyor, MygreqQL ve benim görüşüme göre geri kalanı ile karşılaştırıldığında postgreSQL hakkında çok az bilgi.



9

Karşılaştığım MySQL'den geçiş yaparken temel sorun, terimin databasePostgreSQL'de de aynı olduğunu düşündüm , ama değil. Yani veritabanını uygulamamızdan değiştirirsek veya pgAdminsonuç beklendiği gibi olmaz. Benim durumumda olduğu gibi, her müşteri için ayrı şemalarımız var (burada PostgreSQL terminolojisini göz önünde bulundurarak.) Ve ayrı yönetici şeması. Yani uygulamada, şemalar arasında geçiş yapmak zorundayım.

Bunun için SET search_pathkomutu kullanabiliriz . Bu, geçerli şemayı geçerli oturum için belirtilen şema adına değiştirir.

misal:

SET search_path = different_schema_name;

Bu, current_schema öğesini oturum için belirtilen şema olarak değiştirir. Kalıcı olarak değiştirmek için postgresql.confdosyada değişiklikler yapmalıyız .


4

Bu bağlantıyı ilk kez bağlandığınızda kullanın psql

=# psql <databaseName> <usernamePostgresql>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.