Wie wechsle ich die Datenbank in psql?

1081

In MySQL habe ich verwendetuse database_name;

Was ist das psqlÄquivalent?

Blankman
quelle
1
OK, hier geht es also um psqldas Front-End für PostgreSQL?
Peter Mortensen

Antworten:

1655

In PostgreSQL können Sie den \connectMeta-Befehl des Client-Tools psql verwenden:

\connect DBNAME

oder kurz:

\c DBNAME
Will Hartung
quelle
126
+1: Dies ist NUR ein psql-Befehl. In Postgres selbst gibt es keine Möglichkeit zum "Wechseln". Tatsächlich "wechselt" psql nicht im MySQL-Kontext, sondern schließt nur eine Verbindung und öffnet eine andere.
Rfusca
12
Es gibt also keine Möglichkeit, dies mit SQL zu tun?
Borys
5
Kann dies also unter SQL-Anweisungen in einer .sqlDatei funktionieren ? zB kann ich CREATE DATABASE mydb;gefolgt sein \connect mydb?
J86
1
@Ciwan Ich bin mir ziemlich sicher, dass Sie keine psqlBefehle in eine SQL-Skriptdatei aufnehmen können.
Kenny Evitt
183

Sie können mit \c <database>oder eine Verbindung zu einer Datenbank herstellen \connect <database>.

meagar
quelle
98

An der PSQL-Eingabeaufforderung können Sie Folgendes tun:

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

Sie können die Datenbank auswählen, wenn Sie eine Verbindung mit psql herstellen. Dies ist praktisch, wenn Sie es über ein Skript verwenden:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Manel Clos
quelle
4
Danke, ich wurde verrückt ... :)
Richard
10

\lfür Datenbanken \cDatabaseName, um \dffür in einer bestimmten Datenbank gespeicherte Prozeduren zu db zu wechseln

Ambrish Rajput
quelle
9

Verwenden des Meta-Befehls von psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(siehe Dokumentation ).

Beispiel: \c MyDatabase

Beachten Sie, dass bei den Befehlen \cund \connectmeta zwischen Groß- und Kleinschreibung unterschieden wird .

Franck Dernoncourt
quelle
7

Verwenden Sie die folgende Anweisung, um zu verschiedenen Datenbanken zu wechseln, die sich in Ihrem postgreSQL-RDMS befinden

\c databaseName
Bilal Mahmood
quelle
1

Wenn Sie beim Start zu einer bestimmten Datenbank wechseln möchten, versuchen Sie es

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

Standardmäßig wird Postgres auf dem Port 5432 ausgeführt. Wenn es auf einem anderen ausgeführt wird, müssen Sie den Port in der Befehlszeile übergeben.

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

Mit einem einfachen Alias ​​können wir es praktisch machen.

Erstellen Sie einen Alias ​​in Ihrem .bashrcoder.bash_profile

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

Führen Sie psqlin der Befehlszeile, wird es auf Standard - Datenbank wechseln; psql anotherdbBeim Start wird zur Datenbank mit dem Namen im Argument gewechselt.

Vignesh Raja
quelle
1

Obwohl in der Frage nicht explizit angegeben, besteht der Zweck darin, eine Verbindung zu einem bestimmten Schema / einer bestimmten Datenbank herzustellen.

Eine andere Möglichkeit besteht darin, eine direkte Verbindung zum Schema herzustellen. Beispiel:

sudo -u postgres psql -d my_database_name

Quelle von 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
quelle
1

Sie können auch wie folgt eine Verbindung zu einer Datenbank mit einer anderen ROLLE herstellen.

\connect DBNAME ROLENAME;

oder

\c DBNAME ROLENAME;
Abhishek
quelle
0

Sie können eine Verbindung herstellen mit

\ c Datenbankname

Wenn Sie alle möglichen Befehle für POSTGRESQL oder SQL anzeigen möchten, gehen Sie folgendermaßen vor:

  1. Schienen dbconsole (Sie werden auf Ihre aktuelle ENV-Datenbank zurückgeführt)

  2. \? (Für POSTGRESQL-Befehle)

oder

  1. \ h (Für SQL-Befehle)

  2. Drücken Sie Q zum Beenden

Lakhani Aliraza
quelle
-11

Wie in den anderen Antworten erwähnt, müssen Sie die Verbindung ändern, um eine andere Datenbank zu verwenden.

Postgres arbeitet mit Schemata. Sie können mehrere Schemata in einer einzigen Datenbank haben. Wenn Sie also in derselben Datenbank arbeiten und das Schema ändern möchten, haben Sie folgende Möglichkeiten:

SET SCHEMA 'schema_name';

user3545770
quelle
9
Das ist falsch. Dadurch wird nur das im Suchpfad verwendete Schema geändert. Eine Datenbank enthält mehrere Schemata .
Alle Arbeiter sind essentiell
@cpburnz Ich stimme dir zu
MangEngkus
1
Zusätzlich zu @ cpburnz 'Kommentar SET SCHEMAwird als SET SCHEMA 'schema_name'nicht verwendet SET SCHEMA 'database_name'. Dies ist also eine SQL-Methode zum Ändern des Schemas und nicht der Datenbank. Auch das ist ähnlich wie SET search_path TO schema_name. Siehe Dokumentation hier oder hier .
Ibrahim Dauda