Führen Sie PostgreSQL-Abfragen in PSQL aus

Bilal Shahid 15 Februar 2024
  1. Die grundlegende Methodik der Verwendung von PSQL
  2. Abfragen für jede Datenbank separat ausführen
  3. Verwendung der SINGLE LINE-Syntax anstelle von Semikolon
  4. Verwenden Sie die Datei zum Lesen von SQL-Abfragen in PSQL
Führen Sie PostgreSQL-Abfragen in PSQL aus

PostgreSQL wird mit zwei Optionen geliefert, die erste Option ist PGADMIN4 oder eine andere Versionsnummer, die Sie verwenden werden, und die zweite Option ist PSQL. PSQL ist die Befehlszeilenschnittstelle, die mit unserer PostgreSQL-Sitzung interagieren und Abfragen von der Benutzeroberfläche ausführen kann.

Denken Sie daran, dass PSQL ein Terminal-basiertes Front-End ist und auch Argumente und Abfragen aus einer Datei und ihrer Befehlszeile entgegennehmen kann. Lassen Sie uns jetzt fortfahren und verstehen, wie unsere Abfragen in PSQL, der PostgreSQL-Befehlszeile, funktionieren.

Die grundlegende Methodik der Verwendung von PSQL

Nachdem Sie PSQL mit Ihrem Postgres-Benutzernamen und -Kennwort gestartet und sich erfolgreich angemeldet haben, ist es an der Zeit zu verstehen, wie Sie die Abfragen ausführen, die Sie in der PostgreSQL-Benutzeroberfläche in einer Befehlszeile ausführen würden.

Achten Sie bei Abfragen mit Schlüsselwörtern wie SELECT, INSERT, UPDATE etc. auf die korrekte Syntax, um ungewollte Fehler zu vermeiden. Viele Leute neigen dazu, ein Semikolon ; zu übersehen.

Das Fehlen eines Semikolons führt dazu, dass PSQL denkt, dass die Abfrage noch nicht beendet wurde, und das Drücken von ENTER wird dies nicht sicherstellen. Nehmen wir also an, Sie befinden sich wie folgt in Ihrer PSQL-Instanz:

PSQL-Befehlszeilenschnittstelle

INSERT nun eine Tabelle in die Datenbank. Wir wollen eine Tabelle BAG mit zwei Spalten ID und MODEL EINFÜGEN.

Anfrage:

CREATE table BAG (id INT, model TEXT);

Ausgang:

füge eine Tabelle in die Datenbank ein

Wenn Sie vergessen haben, ein Semikolon zu setzen und ENTER zu drücken, erhalten Sie keine Ausgabe auf dem Bildschirm und bleiben leer.

Ausgang:

Fehler beim Erstellen einer Tabelle in der Datenbank

Auf die gleiche Weise können Sie eine INSERT-Abfrage ausführen, um nun einige Werte wie folgt einzugeben. Wir INSERT die Datensätze ‘(1, Adidas)’, ‘(2, Jale)’ und ‘(3, Niky)’.

Anfrage:

insert into BAG values (1, 'Adidas'), (2, 'Jale'), (3, 'Niky');

Ausgang:

Datensätze einfügen

Führen Sie die Abfrage SELECT aus und geben Sie eine TABLE zurück.

Ausgang:

Datentabelle in der Datenbank anzeigen

Das Ausführen von Abfragen mit PSQL ist einfach. Es gibt jedoch eine Bedingung.

Wenn Sie dazu neigen, eine Abfrage vor einer Abfrage ohne Semikolon-Notation auszuführen, funktioniert die letztere Abfrage überhaupt nicht. Wenn ich also SELECT BAG ohne Semikolon aufrufe und dann die INSERT-Operation ausführe, würde PSQL einen Fehler anzeigen.

Ausgang:

Fehler wird angezeigt, wenn eine Abfrage vor einer Abfrage ohne Semikolon ausgeführt wird

Wenn Sie kein Semikolon nach SELECT setzen, wurde die Abfrage nie beendet. Die nächste INSERT-Abfrage wurde zufällig an diese SELECT-Abfrage angehängt, und wenn sie ausgeführt werden sollte, würde sie einen Fehler verursachen.

Es ist also besser, immer auf Semikolons am Ende jeder Anweisung zu achten.

Abfragen für jede Datenbank separat ausführen

Wir können mehr als eine Datenbank haben. Das Ausführen einer Abfrage ohne Auflistung oder Angabe der Datenbank kann zu noch mehr Verwirrung führen.

Sehen wir uns zuerst alle unsere Datenbanken an. Um Datenbanken in PSQL anzuzeigen, können Sie unten eine Abfrage ausführen.

Anfrage:

\l or \l+

\l+ ist eine aussagekräftigere Version von \l, mit einem angehängten +. Ich habe meine Datenbanken im Folgenden aufgelistet.

Ausgang:

Liste der Datenbanken

Im Fall von \l+ lautet das Ergebnis:

Ausgang:

Liste der Datenbank, die ohne angehängtes + verwendet wird

Wir haben derzeit drei Datenbanken, POSTGRES, TEMPLATE0 und TEMPLATE1. Außerdem können wir die Anweisung SELECT verwenden, um sie anzuzeigen.

Anfrage:

SELECT datname from PG_DATABASE:

Ausgang:

  datname
-----------
 postgres
 template1
 template0
(3 rows)

PG_DATABASE ist ein Katalog, der alle Datenbankinformationen speichert, und DATNAME ist eine Spalte innerhalb dieser Tabelle, die die Datenbanken speichert. Um eine Verbindung zur Datenbank Postgres herzustellen, verwenden wir den Befehl \c.

Befehl:

\c postgres

Sie können dann die Abfrage ausführen, um die Tabellen als \dt zu erhalten.

Anfrage:

\dt

Ausgang:

              List of relations
 Schema |      Name       | Type  |  Owner
--------+-----------------+-------+----------
 public | animal          | table | postgres
 public | bag             | table | postgres
 public | bus             | table | postgres
 public | car             | table | postgres
 public | cat             | table | postgres
 public | dog             | table | postgres
 public | horse           | table | postgres
 public | identity_number | table | postgres
 public | mytable         | table | postgres
 public | person          | table | postgres
 public | person_details  | table | postgres
 public | rider           | table | postgres
 public | strings         | table | postgres
 public | student         | table | postgres
 public | tab             | table | postgres
 public | vehicle         | table | postgres
(16 rows)

Sie können sich jetzt mit der Datenbank TEMPLATE0 oder TEMPLATE1 verbinden, um ihre Tabellen anzuzeigen, aber sie zeigen einen Fehler, weil sie aufgrund der Standardeinstellungen keine eingehenden Benutzerverbindungen akzeptieren.

Ausgang:

Fehler beim Anzeigen der Datenbanktabelle aufgrund von Standardeinstellungen für Verbindungen

Um eine Abfrage für eine bestimmte Datenbank auszuführen, verwenden Sie den Befehl \c, um eine Verbindung herzustellen, und dann die Abfrage.

Anfrage:

psql -U postgres -d postgres -c "SELECT * from BAG;"

Stellen Sie nach dem Schlüsselwort -d eine Verbindung zur Postgres-Datenbank her und führen Sie die Abfrage aus. Ich habe den Datenbanknamen geschrieben, zu dem eine Verbindung hergestellt werden soll, und dann den Befehl ausgegeben.

Achten Sie darauf, die Abfrage nach -c nicht in einfache Kommas zu schreiben, was zu einem Fehler führt. Verwenden Sie doppelte Kommas, um daraus einen gültigen String zu machen, und schreiben Sie am Ende sicherheitshalber ein Semikolon.

Wenn Sie die doppelten Kommas nicht verwenden, führt dies zu einem Fehler wie im folgenden Beispiel.

Anfrage:

psql -U postgres -d postgres -c 'SELECT * FROM BAG;'

Ausgang:

psql: warning: extra command-line argument "*" ignored
psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "BAG'" ignored

Verwendung der SINGLE LINE-Syntax anstelle von Semikolon

Sie können den Befehl -S oder --SINGLE-LINE verwenden, um einzeilige Abfragen automatisch zu beenden, ohne dass ein Semikolon erforderlich ist. Führen Sie beim Initialisieren der PostgreSQL-Sitzung die folgenden Befehle aus.

Befehl:

psql -U postgres -S

oder

psql -U postgres --single-line

Wenn Sie Ihre PSQL-Sitzung ausführen, werden Sie Folgendes bemerken:

postgres^# __

Das bedeutet, dass sich postgres# in postgres^# geändert hat, was auf die Verwendung einer SINGLE LINE-Anweisung hinweist.

Anfrage:

select * from BAG

Wenn Sie die obige Abfrage ausführen, funktioniert sie einwandfrei, und am Ende wird kein Semikolon (;) angehängt. Wenn Sie Ihre Datenbank mit einem Passwort schützen, das bei jeder Sitzung erforderlich ist, können Sie beim Initialisieren einer Sitzung in PSQL das Schlüsselwort PGPASSWORD verwenden.

Verwenden Sie die Datei zum Lesen von SQL-Abfragen in PSQL

Eine weitere nützliche Implementierung zum Lesen größerer SQL-Abfragen besteht darin, manchmal eine .sql-Erweiterungsdatei mit geschriebenen SQL-Abfragen zu verwenden und sie über die PSQL-Befehlszeile auszuführen. Lassen Sie uns zum Beispiel eine Datei mit der Erweiterung .sql mit der folgenden Abfrage erstellen.

Anfrage:

SELECT * from BAG;

Speichern wir es als QUERY1.SQL auf unserem Desktop.

Erstellen Sie eine Datei mit einer SQL-Erweiterung

Um dies auszuführen, während unsere PSQL-Sitzung initialisiert wird. Verwenden Sie den folgenden Befehl.

Befehl:

psql -U postgres -f "C:\Users\Bilal Shahid\Desktop\query1.sql"

Ausgang:

 id |  mode
----+--------
  1 | Adidas
  2 | Jale
  3 | Nikey
  1 | Adidas
  2 | Jale
  3 | Nikey
  1 | Adidas
  2 | Jale
  3 | Nikey
  4 | John
  5 | mike
(11 rows)

Es gibt ein weiteres Äquivalent für den Befehl -f. Der Befehl \i, wenn Sie sich bereits in der PSQL-Sitzung befinden und die Abfrage aus der Datei ausführen möchten.

Anfrage:

postgres=# \i 'C:/Users/Bilal Shahid/Desktop/query1.sql'

Verwenden Sie Backslashes (/) und einzelne Kommas ('), da andernfalls Fehler zurückgegeben werden.

Wir hoffen, dass Sie gelernt haben, PSQL effizient zu verwenden, und die verschiedenen Möglichkeiten verstanden haben, auf die Fehler auftreten können, und wie Sie diese umgehen können. Lesen Sie unsere Tutorials immer gründlich durch, um ein sorgfältiges und tiefes Verständnis zu erlangen.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - PostgreSQL Query