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?
Antworten
Zu viele Anzeigen?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
Öffnen Sie "SQL Shell (psql)" aus Ihren Anwendungen (Mac).
Klicken Sie auf Enter für die Standardeinstellungen. Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
*) 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.
*) Verbinden Sie sich mit einer Datenbank mit \c
, zum Beispiel \c GeneDB1
Sie sollten sehen, dass die Schlüsselabfrage zur neuen DB wechselt, so:
*) Jetzt, da Sie in einer DB sind, möchten Sie die Schemata für diese DB kennen. Der beste Befehl dafür ist \dn
.
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;
:
-) 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".*
*) Jetzt können Sie Ihre Abfragen durchführen. Zum Beispiel:
*) Hier ist, wie die oben genannte DB, das Schema und die Tabellen in pgAdmin aussehen:
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
- See previous answers
- Weitere Antworten anzeigen