Wie wechsle ich die Datenbank in psql?


1081

In MySQL habe ich verwendetuse database_name;

Was ist das psqlÄquivalent?


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

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



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

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



7

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

\c databaseName

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.


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.

1

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

\connect DBNAME ROLENAME;

oder

\c DBNAME ROLENAME;

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


-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';


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.