Psql'de veritabanları nasıl değiştirilir?


Yanıtlar:


1655

PostgreSQL'de, \connectpsql istemci aracının meta komutunu kullanabilirsiniz :

\connect DBNAME

ya da kısaca:

\c DBNAME

126
+1: Bu SADECE bir psql komutudur, Postgres'in kendisinde "geçiş yapmanın" bir yolu yoktur. Aslında, psql MySQL bağlamında "geçiş yapmaz", sadece bir bağlantıyı kapatıp diğerini açar.
rfusca

12
Yani bunu SQL ile yapma şansınız yok mu?
Borys

5
Peki bu bir .sqldosyadaki SQL deyimleri arasında çalışabilir mi? örneğin CREATE DATABASE mydb;takip edebilir miyim \connect mydb?
J86

1
@Ciwan psqlBir SQL komut dosyasına komut ekleyemeyeceğinizden eminim .
Kenny Evitt

183

Sen bir veritabanına bağlanabilir \c <database>veya \connect <database>.



31

Psql ile bağlantı kurarken veritabanını seçebilirsiniz. Bir komut dosyasından kullanırken bu kullanışlıdır:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test

4
Teşekkürler, deliriyordum ... :)
Richard

10

\lveritabanları için \cDatabaseName \dfbelirli bir veritabanında depolanan yordamlar için db'ye geçmek için



7

PostgreSQL RDMS'nizde bulunan farklı veritabanlarına geçmek için aşağıdaki ifadeyi kullanın

\c databaseName

1

Başlangıçta belirli bir veritabanına geçmek istiyorsanız,

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

Varsayılan olarak, Postgres 5432 numaralı bağlantı noktasında çalışır. Başka bir bağlantıda çalışırsa, bağlantı noktasını komut satırından geçirdiğinizden emin olun.

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

Basit bir takma adla, bunu kullanışlı hale getirebiliriz.

Bir takma ad yaratın .bashrcya.bash_profile

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

psqlKomut satırında çalıştırın , varsayılan veritabanına geçecektir; psql anotherdb, başlangıçta bağımsız değişken adı ile db'ye geçecektir.


1

Soruda açıkça belirtilmemesine rağmen, amaç belirli bir şemaya / veritabanına bağlanmaktır.

Başka bir seçenek, şemaya doğrudan bağlanmaktır. Misal:

sudo -u postgres psql -d my_database_name

Kaynak 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.

1

Ayrıca aşağıdaki gibi farklı bir ROLE içeren bir veritabanına da bağlanabilirsiniz.

\connect DBNAME ROLENAME;

veya

\c DBNAME ROLENAME;

0

Kullanarak bağlanabilirsiniz

\ c dbname

POSTGRESQL veya SQL için olası tüm komutları görmek istiyorsanız şu adımları izleyin:

  1. rails dbconsole (Mevcut ENV veritabanınıza yönlendirileceksiniz)

  2. \? (POSTGRESQL komutları için)

veya

  1. \ h (SQL komutları için)

  2. Çıkmak için Q düğmesine basın


-11

Diğer yanıtlarda belirtildiği gibi, farklı bir veritabanı kullanmak için bağlantıyı değiştirmeniz gerekir.

Postgres şemalarla çalışır. Tek bir veritabanında birden fazla şema olabilir. Aynı veritabanında çalışıyorsanız ve şemayı değiştirmek istiyorsanız şunları yapabilirsiniz:

SET SCHEMA 'schema_name';


9
Bu yanlış. Bu yalnızca arama yolunda kullanılan şemayı değiştirir. Bir veritabanı ta çoklu şema içerir .
Tüm İşçiler

@cpburnz Seninle aynı fikirdeyim
MangEngkus

1
@ Cpburnz yorumuna ek olarak, SET SCHEMAolarak kullanılır SET SCHEMA 'schema_name'değil SET SCHEMA 'database_name'. Yani bu veritabanı değil şemayı değiştirmenin bir SQL yoludur. Ayrıca buna benzer SET search_path TO schema_name. Buradaki veya buradaki belgelere bakın .
Ibrahim Dauda
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.