2016-07-28 25 views
1

Immer wenn ich eine Postgres-Abfrage durchführe, scheint es, dass Sie die Befehlszeile vollständig beenden müssen.Postgres-Abfrage beenden, ohne die Befehlszeile zu verlassen - Automatisches Zurückkehren zur Befehlszeile

Ich habe es getan, wo Sie drücken können CTRL-C und Sie werden zurück auf die PSQL Befehlszeile, d. H., databasename=>. Außerdem, wenn ich in der Mitte bin, Ergebnisse zu sehen, und ich drücke CTRL-C, wie kann ich Postgres mir zurück zu databasename=> schicken lassen?

Bonus:

Gibt es eine Möglichkeit, um Skript so, wenn ich tippe usedb database von psql folllwed wird Postgres wissen, welche Datenbank ich mich beziehe, und schließen Sie mich automatisch, um es so dont Ich habe zu schreiben \ connect Datenbankname?

+0

Können Sie uns etwas mehr über Ihre Erfahrungen erzählen? Was passiert, wenn Sie während einer Abfrage 'ctrl-c' drücken? Haben Sie sich auch die [psql-Dokumentation] (https://www.postgresql.org/docs/current/static/app-psql.html) angesehen? Dort finden Sie Informationen, die für Ihre Bonusfrage nützlich sein könnten. – jmelesky

Antwort

0

Sobald eine Postgres-Abfrage ausgeführt wurde und ihre Ergebnistabelle in der Befehlszeilenumgebung 'psql' zurückgegeben wurde, sollte sie in dieselbe Datenbank zurückfallen, in der Sie den vorherigen Befehl ausgeführt haben.

Wenn Sie direkt auf eine Datenbank von Ihrem Terminal anschließen wollen:

psql -d nameofdatabase 

Wenn Sie ein Skript verbinden verwenden Sie Postgres von URL zugreifen:

postgres://username:[email protected]/nameofdatabase 

wo ‚localhost‘ könnte durch die IP der Datenbank ersetzt werden, zu der Sie eine Verbindung herstellen möchten, wenn sie nicht auf demselben Computer installiert ist.

0

Anstatt Ctrl-C zu drücken, drücken Sie Ctrl-D. In Unix Ctrl-D ist das Ende der Datei (EOF) Zeichen. Das ist, was macht psql beenden --- genau wie wenn Sie es ein Skript auf Stdin fütterte und es bis zum Ende ging. Es funktioniert in vielen anderen REPLs auch, wie irb, rails console, python, R, bash usw.

Der Grund Ctrl-C Ausgang nicht so ist, dass Sie es verwenden, können einen einzelnen Befehl abbrechen, zum Beispiel eine lang andauernde Abfrage.

EDIT: Auch wenn Sie Ergebnisse sehen und sie ausgelagert werden (sie erscheinen auf einem neuen Bildschirm und Sie nach oben und unten), können Sie durch Eingabe von q an die psql prompt zurück. Das liegt daran, dass der verwendete Pager standardmäßig less ist. Sie können man less sagen, um mehr darüber zu lesen. Oder experimentieren Sie mit einer beliebigen Textdatei: less /etc/services.

Persönlich finde ich das Paging in psql ärgerlich, so dass ich es deaktivieren, indem Sie eine Datei ~/.psqlrc mit dieser Linie namens erstellen:

\pset pager 

(auch, sorry, wenn Sie wissen, dass dies bereits: ~ ist nur eine Abkürzung für . „mein Home-Verzeichnis“ so ist ~/.psqlrc die gleiche wie /home/whatever/.psqlrc)

Bonus:. Wenn Sie zu einer bestimmten Datenbank verbinden möchten, können Sie psql -d foo oder auch nur psql foo sagen kann.