Befehl "use database_name" in PostgreSQL

366

Ich bin Anfänger in PostgreSQL.

Ich möchte über den Abfrageeditor von Postgres eine Verbindung zu einer anderen Datenbank herstellen - wie der USEBefehl von MySQL oder MS SQL Server.

Ich fand \c databasenamedurch Durchsuchen des Internets, aber es läuft nur auf psql . Wenn ich es im PostgreSQL-Abfrageeditor versuche, wird ein Syntaxfehler angezeigt.

Ich muss die Datenbank durch pgscripting ändern. Weiß jemand, wie es geht?

Sam
quelle
Mögliches Duplikat von Wie man Datenbanken in psql wechselt?
AlikElzin-Kilaka
Eine andere Möglichkeit besteht darin, eine direkte Verbindung zum Schema herzustellen. Beispiel : sudo -u postgres psql -d my_database_name. Quelle
AlikElzin-kilaka

Antworten:

381

Wenn Sie eine Verbindung herstellen, PostgreSQLerfolgt dies immer zu einer bestimmten Datenbank. Um auf eine andere Datenbank zugreifen zu können, müssen Sie eine neue Verbindung herstellen.

Die Verwendung \cin psql schließt die alte Verbindung und erwirbt eine neue unter Verwendung der angegebenen Datenbank und / oder Anmeldeinformationen. Sie erhalten einen ganz neuen Backend-Prozess und alles.

kgrittn
quelle
Vielen Dank an kgrittn für Ihre wertvolle Anleitung. Können Sie mir sagen, wie ich mithilfe der pgscript-Abfrage eine neue Verbindung zur Datenbank herstellen und die vorherige schließen kann?
Sam
Ich bin nicht mit pgscript vertraut. Wenn dies eine Sprache ist, in der Sie Funktionen schreiben, lautet die Antwort, dass dies nicht möglich ist. Vielleicht sollten Sie in Betracht ziehen, Tabellen in verschiedene Schemata anstatt in verschiedene Datenbanken zu setzen ?
kgrittn
2
Eine Abfrage kann die Datenbank in PostgreSQL nicht ändern.
kgrittn
Danke kgrittn für all deine Hilfe .. :)
sam
8
Wenn ich mich nicht irre, ähneln Datenbanken in MySQL eher Schemata in PostgreSQL - Sie können zwischen diesen wechseln, aber DBs in PostgreSQL sind ein ganz anderes Ballspiel.
Mpen
213

Sie müssen die Datenbank angeben, die beim Verbinden verwendet werden soll. Wenn Sie psql für Ihr Skript verwenden möchten, können Sie "\ c name_database" verwenden.

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

Zu diesem Zeitpunkt wird möglicherweise die folgende Ausgabe angezeigt

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

Beachten Sie, wie sich die Eingabeaufforderung ändert. Prost, ich habe gerade auch danach gesucht, zu wenig Informationen über postgreSQL im Vergleich zu MySQL und dem Rest meiner Ansicht nach.

Eugene
quelle
25

In pgAdmin können Sie auch verwenden

SET search_path TO your_db_name;

Bart De Boeck
quelle
Es hat funktioniert
YouAreAwesome
9

Das Grundproblem bei der Migration von MySQL war, dass ich dachte, dass der Begriff databaseauch in PostgreSQL derselbe ist, aber das ist er nicht. Wenn wir also die Datenbank von unserer Anwendung oder wechseln pgAdmin, ist das Ergebnis nicht wie erwartet. Wie in meinem Fall haben wir für jeden Kunden separate Schemas (unter Berücksichtigung der PostgreSQL-Terminologie) und ein separates Administratorschema. In der Anwendung muss ich also zwischen Schemata wechseln.

Hierfür können wir den SET search_pathBefehl verwenden. Dadurch wird das aktuelle Schema auf den angegebenen Schemanamen für die aktuelle Sitzung umgeschaltet.

Beispiel:

SET search_path = different_schema_name;

Dadurch wird das aktuelle Schema in das angegebene Schema für die Sitzung geändert. Um es dauerhaft zu ändern, müssen wir Änderungen in der postgresql.confDatei vornehmen .

VPK
quelle
4

Verwenden Sie diesen Befehl, wenn Sie zum ersten Mal eine Verbindung herstellen psql

=# psql <databaseName> <usernamePostgresql>
Sukma Saputra
quelle