Jak przełączać bazy danych w psql?

1081

W MySQL użyłemuse database_name;

Jaki jest psqlodpowiednik?

Blankman
źródło
1
OK, więc chodzi o psqlfront-end dla PostgreSQL?
Peter Mortensen,

Odpowiedzi:

1655

W PostgreSQL możesz użyć \connectmeta-polecenia narzędzia klienta psql:

\connect DBNAME

lub w skrócie:

\c DBNAME
Will Hartung
źródło
126
+1: Jest to po prostu polecenie psql, w samym Postgresie nie ma możliwości „przełączenia”. W rzeczywistości psql nie „przełącza się” w kontekście MySQL, tylko zamyka jedno połączenie i otwiera drugie.
rfusca
12
Więc nie ma szans na zrobienie tego z SQL?
Borys
5
Czy to może działać wśród instrukcji SQL w .sqlpliku? np. czy mogłem CREATE DATABASE mydb;śledzić \connect mydb?
J86
1
@Ciwan Jestem pewien, że nie możesz dołączyć psqlpoleceń do pliku skryptu SQL.
Kenny Evitt,
183

Możesz połączyć się z bazą danych za pomocą \c <database>lub \connect <database>.

Meagar
źródło
98

W wierszu polecenia PSQL możesz wykonać:

\connect (or \c) dbname
Michael Goldshteyn
źródło
31

Możesz wybrać bazę danych podczas łączenia z psql. Jest to przydatne, gdy używasz go ze skryptu:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Manel Clos
źródło
4
Dzięki, byłem szalony ... :)
Richard,
10

\ldla baz danych \cDatabaseName, aby przełączyć na db \dfdla procedur przechowywanych w konkretnej bazie danych

Ambrish Rajput
źródło
9

Korzystanie z meta-polecenia psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(patrz dokumentacja ).

Przykład: \c MyDatabase

Należy zauważyć, że \ci \connectmeta-polecenia są wrażliwe na wielkość liter .

Franck Dernoncourt
źródło
7

Użyj poniższej instrukcji, aby przełączyć się do różnych baz danych znajdujących się w twoim RDG postgreSQL

\c databaseName
Bilal Mahmood
źródło
1

Jeśli chcesz przejść do określonej bazy danych podczas uruchamiania, spróbuj

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

Domyślnie Postgres działa na porcie 5432. Jeśli działa na innym, pamiętaj, aby przekazać port w wierszu poleceń.

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

Za pomocą prostego aliasu możemy to zrobić.

Utwórz alias w swoim .bashrclub.bash_profile

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

Uruchom psqlw linii poleceń, przełączy się na domyślną bazę danych; psql anotherdb, przełączy się na db o nazwie w argumencie podczas uruchamiania.

Vignesh Raja
źródło
1

Chociaż nie zostało to wyraźnie określone w pytaniu, celem jest połączenie się z określonym schematem / bazą danych.

Inną opcją jest bezpośrednie połączenie ze schematem. Przykład:

sudo -u postgres psql -d my_database_name

Źródło z 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
źródło
1

Możesz także połączyć się z bazą danych z inną ROLĄ w następujący sposób.

\connect DBNAME ROLENAME;

lub

\c DBNAME ROLENAME;
Abhishek
źródło
0

Możesz połączyć za pomocą

\ c nazwa_db

Jeśli chcesz zobaczyć wszystkie możliwe polecenia POSTGRESQL lub SQL, wykonaj następujące kroki:

  1. rails dbconsole (nastąpi przekierowanie do bieżącej bazy danych ENV)

  2. \? (Dla poleceń POSTGRESQL)

lub

  1. \ h (dla poleceń SQL)

  2. Naciśnij Q, aby wyjść

Lakhani Aliraza
źródło
-11

Jak wspomniano w innych odpowiedziach, musisz zmienić połączenie, aby użyć innej bazy danych.

Postgres działa ze schematami. Możesz mieć wiele schematów w jednej bazie danych. Jeśli więc pracujesz w tej samej bazie danych i chcesz zmienić schemat, możesz:

SET SCHEMA 'schema_name';

użytkownik3545770
źródło
9
To jest źle. Spowoduje to jedynie zmianę schematu używanego na ścieżce wyszukiwania. Baza danych zawiera wiele schematów TA.
Wszyscy pracownicy są niezbędni
@cpburnz Zgadzam się z tobą
MangEngkus
1
Oprócz komentarza @ cpburnz SET SCHEMAjest używany jako SET SCHEMA 'schema_name'nie SET SCHEMA 'database_name'. Jest to więc sposób SQL na zmianę schematu, a nie bazy danych. Również to jest podobne do SET search_path TO schema_name. Zobacz dokumentację tutaj lub tutaj .
Ibrahim Dauda,