Angenommen, ich muss einige Abfragen von Hand in die Konsole schreiben. Wie lassen sich mehrzeilige Abfragen wie CREATE TABLE
Anweisungen am effizientesten ausführen ?
Ich bin es gewohnt, Microsoft Management Studio zu verwenden, aber jetzt muss ich mich spontan mit PostgreSQL vertraut machen.
postgresql
Chad Harrison
quelle
quelle
#
Eingabeaufforderung immer nur in einer Zeile angezeigt wird, was für Dinge wieCREATE DATABASE
oder großartig istALTER USER
. Wie kann ich meinen Text vor der Ausführung gut formatieren?Antworten:
Es gibt wirklich keine "mehrzeilige Abfrage" - soweit es PostgreSQL betrifft, sind all diese Leerzeichen und diese Zeilenumbrüche bedeutungslos (es sei denn, sie kommen in einer Zeichenfolge vor oder wir sprechen über Tabulatoren und dergleichen in einer
COPY
Anweisung oder einer wenige andere besondere Orte).Das Schreiben von Abfragen "auf der Konsole" über SSH erfolgt normalerweise mit dem
psql
Tool, dem interaktiven Postgres-Terminal ( weitere Informationen finden Sie in den Dokumenten ).Mit dieser Option können Sie Textdateien mit Abfragen an übergeben .
psql
-f
Sie können Abfragen auch
psql
über die Befehlszeile übergeben (entsprechend Ihrer Shell angegeben) oder über STDIN (den Standardeingabestream) weiterleiten - siehe-c
Option.quelle
Folgendes führt Sie zum interaktiven Terminal von PostgreSQL:
Geben Sie dann
\e
(oder\edit
) ein, um einen Editor zu öffnen (vi
Standardeinstellung):Schreiben Sie eine Abfrage:
Speichern und beenden Sie schließlich Ihren Editor (z. B.
:wq
invi
) undpsql
führen Sie die gerade geschriebene Abfrage aus.Um einen anderen Editor, wie
vim
odernano
, Satz eine der folgenden Umgebungsvariablen:PSQL_EDITOR
,EDITOR
,VISUAL
.Weitere Informationen finden Sie unter https://www.postgresql.org/docs/current/app-psql.html und suchen Sie nach
\e
.quelle
Sie können die Abfrage in eine temporäre Datei schreiben und mit ausführen
psql -f /path/to/temp/file
quelle
Natürlich, aber wenn jemand nichts davon weiß, können Sie mehrzeilige Anweisungen direkt in die psql-Eingabeaufforderung schreiben:
Beachten Sie das nachfolgende
;
Zeichen. Jeder SQL-Befehl wird erst ausgeführt, wenn dieses Zeichen ausgegeben wurde. Der einfachste Weg ist also, einfach mehrzeilige SQL-Befehle mit einem Trailing zu kopieren und einzufügen;
.quelle