465 Stimmen

Führen Sie PostgreSQL-Abfragen von der Befehlszeile aus

Ich habe einen Datensatz in eine Tabelle eingefügt....Ich möchte jetzt die gesamte Tabelle mit Zeilen und Spalten und Daten sehen. Wie kann ich sie durch Befehl anzeigen?

733voto

Grant Punkte 7447

psql -U Benutzername -d meineDatenbank -c 'SELECT * FROM meineTabelle'

Wenn Sie neu in Postgresql sind und nicht mit der Verwendung des Befehlszeilenwerkzeugs psql vertraut sind, gibt es einige verwirrende Verhaltensweisen, die Sie kennen sollten, wenn Sie eine interaktive Sitzung gestartet haben.

Zum Beispiel, starten Sie eine interaktive Sitzung:

psql -U Benutzername meineDatenbank 
meineDatenbank=#

An diesem Punkt können Sie eine Abfrage direkt eingeben, aber Sie müssen daran denken, die Abfrage mit einem Semikolon ; abzuschließen

Zum Beispiel:

meineDatenbank=# SELECT * FROM meineTabelle;

Wenn Sie das Semikolon vergessen, erhalten Sie nichts in Ihrer Rückgabereihe, weil psql davon ausgeht, dass Sie Ihre Abfrage noch nicht beendet haben, wenn Sie Enter drücken. Dies kann zu allerlei Verwirrung führen. Wenn Sie beispielsweise dieselbe Abfrage erneut eingeben, haben Sie höchstwahrscheinlich einen Syntaxfehler erstellt.

Als Experiment können Sie beliebigen Unfug am psql-Prompt eingeben und dann Enter drücken. psql wird Ihnen stillschweigend eine neue Zeile anzeigen. Wenn Sie auf dieser neuen Zeile ein Semikolon eingeben und dann Enter drücken, erhalten Sie den FEHLER:

meineDatenbank=# asdfs 
meineDatenbank=# ;  
FEHLER: Syntaxfehler in oder in der Nähe von "asdfs"
ZEILE 1: asdfs
    ^

Die Faustregel ist: Wenn Sie keine Antwort von psql erhalten, aber zumindest Etwas erwartet haben, dann haben Sie das Semikolon ; vergessen

158voto

Paul Draper Punkte 70845
SELECT * FROM my_table;

wo my_table ist der Name Ihrer Tabelle.

BEARBEITEN:

psql -c "SELECT * FROM my_table"

oder einfach psql und geben Sie dann Ihre Abfragen ein.

78voto

pyAddict Punkte 1366

Wenn Ihre DB passwortgeschützt ist, wäre die Lösung:

PGPASSWORD=password  psql -U benutzername -d dbname -c "select * from my_table"

69voto

Gene Punkte 10122

Öffnen Sie "SQL Shell (psql)" aus Ihren Anwendungen (Mac).

Geben Sie hier eine Bildbeschreibung ein

Klicken Sie auf Enter für die Standardeinstellungen. Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.

Geben Sie hier eine Bildbeschreibung ein

*) Geben Sie \? für Hilfe ein

*) Geben Sie \conninfo ein, um zu sehen, als welcher Benutzer Sie verbunden sind.

*) Geben Sie \l ein, um die Liste der Datenbanken zu sehen.

Geben Sie hier eine Bildbeschreibung ein

*) Verbinden Sie sich mit einer Datenbank mit \c , zum Beispiel \c GeneDB1

Geben Sie hier eine Bildbeschreibung ein

Sie sollten sehen, dass die Schlüsselabfrage zur neuen DB wechselt, so: Geben Sie hier eine Bildbeschreibung ein

*) Jetzt, da Sie in einer DB sind, möchten Sie die Schemata für diese DB kennen. Der beste Befehl dafür ist \dn.

Geben Sie hier eine Bildbeschreibung ein

Weitere Befehle, die auch funktionieren (aber nicht so gut), sind select schema_name from information_schema.schemata; und select nspname from pg_catalog.pg_namespace;:

Geben Sie hier eine Bildbeschreibung ein

-) Nun, da Sie die Schemata haben, möchten Sie die Tabellen in diesen Schemata kennen. Dafür können Sie den Befehl dt verwenden. Zum Beispiel \dt "GeneSchema1".*

Geben Sie hier eine Bildbeschreibung ein

*) Jetzt können Sie Ihre Abfragen durchführen. Zum Beispiel:

Geben Sie hier eine Bildbeschreibung ein

*) Hier ist, wie die oben genannte DB, das Schema und die Tabellen in pgAdmin aussehen:

Geben Sie hier eine Bildbeschreibung ein

13voto

Devil's Dream Punkte 633

Ich zweifle nicht an der Antwort von @Grant. Aber manchmal treffe ich auf einige Probleme, wie zum Beispiel, wenn der Spaltenname einem reservierten Schlüsselwort von PostgreSQL ähnelt, wie z.B. natural, in diesem Fall ist es schwierig, ähnliche SQL-Befehle von der Befehlszeile aus auszuführen, da "\natural\" im Abfragefeld benötigt wird. Daher ist mein Ansatz, den SQL-Befehl in einer separaten Datei zu schreiben und die SQL-Datei von der Befehlszeile aus auszuführen. Dies hat auch einen weiteren Vorteil. Wenn Sie die Abfrage für ein großes Skript ändern müssen, müssen Sie nicht die Skriptdatei oder den Befehl ändern. Ändern Sie nur die SQL-Datei wie folgt:

psql -h localhost -d Datenbank -U postgres -p 5432 -a -q -f /pfad/zur/datei.sql

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X