it-swarm.com.de

Führen Sie PostgreSQL-Abfragen über die Befehlszeile aus

Ich habe Daten in eine Tabelle eingefügt. Ich möchte jetzt eine ganze Tabelle mit Zeilen, Spalten und Daten sehen. Wie kann ich es durch Befehl anzeigen?

238
Manu Lakaster

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

Wenn Sie mit Postgresql noch nicht vertraut sind und das Befehlszeilentool psql nicht verwenden, sollten Sie einige verwirrende Verhaltensweisen beachten, wenn Sie an einer interaktiven Sitzung teilnehmen.

Initiieren Sie beispielsweise eine interaktive Sitzung:

psql -U username mydatabase 
mydatabase=#

Zu diesem Zeitpunkt können Sie eine Abfrage direkt eingeben, aber Sie müssen daran denken, die Abfrage mit einem Semikolon ; zu beenden

Zum Beispiel:

mydatabase=# SELECT * FROM mytable;

Wenn Sie das Semikolon vergessen, erhalten Sie beim Drücken der Eingabetaste nichts in der Rückleitung, da psql davon ausgeht, dass Sie Ihre Abfrage noch nicht vollständig eingegeben haben. Dies kann zu allerlei Verwirrung führen. Wenn Sie beispielsweise dieselbe Abfrage erneut eingeben, wird höchstwahrscheinlich ein Syntaxfehler auftreten.

Versuchen Sie als Experiment, an der psql-Eingabeaufforderung ein beliebiges Garble einzugeben, und drücken Sie die Eingabetaste. psql versorgt Sie stillschweigend mit einer neuen Zeile. Wenn Sie in dieser neuen Zeile ein Semikolon eingeben und dann die Eingabetaste drücken, erhalten Sie den Fehler:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

Die Faustregel lautet: Wenn Sie keine Antwort von psql erhalten haben, aber mindestens ETWAS erwartet haben, haben Sie das Semikolon ; vergessen.

415
Grant
SELECT * FROM my_table;

dabei ist my_table der Name Ihrer Tabelle.

BEARBEITEN:

psql -c "SELECT * FROM my_table"

oder einfach psql und geben Sie dann Ihre Abfragen ein.

78
Paul Draper

Wenn Ihre Datenbank kennwortgeschützt ist, lautet die Lösung:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
30
pyAddict

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

enter image description here

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

enter image description here

*) Geben Sie \? ein, um Hilfe zu erhalten

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

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

enter image description here

*) Stellen Sie mit \c <Name of DB> eine Verbindung zu einer Datenbank her, z. B. \c GeneDB1

enter image description here

Sie sollten sehen, wie sich die Tasteneingabeaufforderung in die neue Datenbank ändert: enter image description here

*) Jetzt, da Sie sich in einer bestimmten Datenbank befinden, möchten Sie die Schemata für diese Datenbank kennen. Der beste Befehl dazu ist \dn.

enter image description here

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

enter image description here

-) 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".*

enter image description here

*) Jetzt können Sie Ihre Abfragen machen. Zum Beispiel:

enter image description here

*) So sehen die oben genannten DBs, Schemas und Tabellen in pgAdmin aus:

enter image description here

6
Gene

Ich habe keinen Zweifel an @Grant Antwort. Manchmal treten jedoch nur wenige Probleme auf, z. B. wenn der Spaltenname einem reservierten Schlüsselwort von postgresql ähnlich ist, wie z. B. natural. In diesem Fall ist es schwierig, ähnliches SQL wie "\ natural \" über die Befehlszeile auszuführen im Feld Abfrage erforderlich sein. Mein Ansatz ist es also, SQL in eine separate Datei zu schreiben und die SQL-Datei über die Befehlszeile auszuführen. Dies hat auch einen weiteren Vorteil. Wenn Sie die Abfrage für ein großes Skript ändern müssen, müssen Sie die Skriptdatei oder den Befehl nicht berühren. Ändern Sie nur die SQL-Datei wie folgt

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
2
Devil's Dream
  1. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Verzeichnis, in dem Postgres installiert ist. In meinem Fall ist mein Postgres-Pfad "D:\TOOLS\Postgresql-9.4.1-3". Nach dem Verschieben in das bin-Verzeichnis von Postgres.So wird die Eingabeaufforderung als "D:\TOOLS \" angezeigt. Postgresql-9.4.1-3\bin> "
  2. Jetzt ist mein Ziel, "UserName" aus der Benutzertabelle mit dem Wert "UserId" auszuwählen. Die Datenbankabfrage lautet also "Wählen Sie" UserName "unter" Users "aus. Wobei" UserId "= 1" .

Für die psql-Eingabeaufforderung von postgres wird dieselbe Abfrage wie unten geschrieben.

D:\TOOLS\Postgresql-9.4.1-3\bin> psql -U postgres -d Datenbankname -h lokaler Host - t -c "Wählen Sie u. \" Benutzername\"aus den Benutzern aus u. Wo u. \" Benutzer-ID\"= 1;

1
KPatel