503 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?

14voto

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

10voto

DEV Tiago França Punkte 498
## Verwenden der SQL-Datei
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -a -q -f /path/to/sql/file.sql
## Oder
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db < /path/to/sql/file.sql

## Verwenden des Befehls
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -c "select * from my table limit 1;"

6voto

KPatel Punkte 51
  1. Öffnen Sie ein Eingabeaufforderungsfenster und wechseln Sie zum Verzeichnis, in dem Postgres installiert ist. In meinem Fall ist mein Postgres-Pfad "D:\TOOLS\Postgresql-9.4.1-3". Danach wechseln Sie in das bin-Verzeichnis von Postgres. Die Befehlszeile zeigt dann "D:\TOOLS\Postgresql-9.4.1-3\bin>" an.
  2. Jetzt ist mein Ziel, "Benutzername" aus der Benutzertabelle mit dem Wert "Benutzer-ID" auszuwählen. Die Datenbankabfrage lautet "Select u."UserName" from users u Where u."UserId"=1".

Die gleiche Abfrage wird im psql-Befehlsfenster von Postgres wie folgt geschrieben.

D:\TOOLS\Postgresql-9.4.1-3\bin>psql -U postgres -d Datenbankname -h localhost - t -c "Select u.\"UserName\" from users u Where u.\"UserId\"=1;

5voto

Stefan Punkte 1628

Ich werde meine Erfahrung für einen Befehl auf einer Windows-Maschine hinzufügen. Ich wollte versuchen, einen einzigen Befehl auszuführen, aus dem ich Tabelleninhalt erhalten würde.

Dies ist der einzelne Befehl, der für mich funktioniert hat:

psql -U postgres -d typeorm -c "SELECT * FROM \"Author\"";

  • -U postgres - Benutzer
  • -d typeorm - meine Datenbank, mit der ich mich verbinden möchte
  • -c ... - mein Abfragebefehl
  • ; - Semikolon

Ich hatte hauptsächlich Probleme damit, herauszufinden, wie genau der Abfrage-Teil eingerichtet werden sollte. Ich habe es mit verschiedenen Befehlen versucht wie: mit ', ", (), aber nichts hat für mich funktioniert außer dieser Notation.

5voto

Mehdi Hamin Punkte 152

Für das direkte Ausführen von SQL-Befehlen in einer passwortgeschützten Datenbank. Es ist besser, das Verbindungszeichenkettenformat in der Befehlszeile zu verwenden. Verwenden Sie diesen Befehl:

psql -d postgresql://postgres:password@localhost:5432/dbname 
-c "create database sample1 --oder irgend ein Befehl"

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