Postgres zeigt nicht alle Zeilen einer Tabelle an

Ich habe eine Tabelle als .csv-Datei in Postgres importiert.

Der Befehl SELECT * FROM tabellenname zeigt mir nur die ersten 50 Zeilen an, dann steht – Fortsetzung –

Wenn ich runterscrolle bleibt die Anzeige schwarz.

Ich arbeite auf einem Notebook mit Windows meines Arbeitgebers. Wenn ich mit Postgres auf meinem Mac arbeite, habe ich dieses Problem nicht. Der obenstehende Befehl zeigt die ganze Tabelle an und ich kann runterscrollen.

Wie kann ich das Problem mit Postgres auf dem Windows-Notebook lösen?

mit was für einem Client-Programm arbeitest Du? Das ist sehr, SEHR sicher nur ein Problem des Clients, nicht von PostgreSQL selbst.

Es ist vielleicht ein Mix aus Client / Anzeigeprogramm und den Daten.
Hab das schon lange nicht mehr erlebt, aber in anderen älteren Umgebungen kam es abhängig von DB / Treiber zu solchen Effekten (Client will scrollen, aber kann nicht) wenn “kaputte” Daten importiert wurden.
Konkret waren es oft Datumswerte, die zwar vom Import geschluckt wurden, aber etwas abstrus waren oder schlicht, nicht zum Range des Datentypen passten. (Es war keine postgres db)

Test 1: Andere Tabelle mit mehr als 50 Datensätzen abfragen.
Test 2: Gleiche Abfrage mit Command line postgres tool psql durchführen, sollte gehen
(Daten)Analyse: Min/Max Abfragen auf den einzelnen Spalten durchführen (im Fehlerfall auf bestimmten Spalten notfalls auch mit psql)

Hinweis: die genannten Rangeprobleme ergeben sich wohl am seltensten auf Text/Varchar Spalten (als letztes prüfen oder gar nicht)

Ich gehe über die Kommandozeile (WIN + R) und psql in postgres rein.

Es wird einfach nicht die ganze Tabelle angezeigt, sondern nur ein Auszug und zuunterst steht:

– Fortsetzung –

Wenn ich dann die Entertaste drücke, wird mit jedem Tastendruck Zeile um Zeile hinzugefügt.

Warum ist das wohl so? Auf meinem Mac und psql habe ich dieses Problem nicht…

Nachfolgend ein printscreen, wie das aussieht:

Denke nicht, dass mit den Daten etwas nicht stimmt. Auf meinem Mac und psql geht es auch, da wird die ganze Tabelle angezeigt…

psql nutzt zur Anzeige Mittel des Betriebssystems, unter Linux z.B. kann man ‘more’ oder ‘less’ oder ähnliche Tools verwenden. Dazu einfach die Umgebungsvariable PAGER setzen.

Hättest du mir einen Link für eine Anleitung, wie ich Umgebungsvariable PAGER genau einstellen muss? Ich habe auf dem Web einfach nichts zu meinem Problem mit dem Suchbegriff “-- Fortsetzung --” gefunden.

Ich habe erst kürzlich angefangen, etwas Linux Basics zu erlernen, dort kenne ich die Befehle more und less wenn ich z.B. files lese. Aber auch das hilft ja nicht, eine ganze Tabelle darstellen zu lassen, denn more zeigt einem auch einen Ausschnitt an mit der Prozentanzeige unten, wieviel man schon gelesen hat und less zeigt ebenfalls einen Ausschnitt an mit den Zusatzfeature, dass man eine Suchfunktion hat. Soviel jedenfalls, was ich von more und less kenne…

Wie würdest du dann den SQL Befehl genau schreiben mit more oder less?

Ok, vielleicht wäre das was: postgresql - customize pager in psql - Stack Overflow

Du willst vermutlich in ‘psql’ nicht eine 1 Millione Rows große Tabelle einfach nur durchrauschen lassen, falls doch, sage halt vorher

export PAGER=’’

Falls Du aber more, oder less, oder etwas anderes nutzen willst, dann setze es halt passend.

Ja, ok, bei einer Million Reihen wird es schwierig stimmt.

Meine Tabelle hat nur 1800 Reihen. Aber sag doch mal bitte konkret wie du in

SELECT * FROM tabelle;

more einbaust?

Jetzt habe ich verstanden, was in psql auf meinem Mac anders ist:

Dort zeigt es mir z.B. die ersten 5 (oder 10) Zeilen an, dann erscheint ein Umbruch, und die letzten 10 Zeilen zeigt es mir wieder an. Aber so sehe ich direkt, wieviel Zeilen meine Tabelle hat. Könnte ich diese Ansicht nicht auch einstellen? Diese Ansicht finde ich besser.

Habe jetzt aber begriffen, was die pager Funktion ist und wie man die an- und abstellen kann.

Müsste mir vielleicht mal die psql Dokumentation reinziehen: PostgreSQL: Documentation: 13: psql

Vielleicht kannst du mir hier noch einen Ratschlag geben. Die Syntax ist:

psql [option …] [dbname [username ]]

Wenn ich mit ein paar dieser Befehle herumexperimentieren möchte…(dumme Frage): Müsste ich dies in postgres machen oder werden die Befehle auf der Kommandozeile eingegeben?

Hm, mit einer genaueren Beschreibung des Problems hätte man sich ein paar Schleifen sparen können.

Du kannst einfach folgendes schreiben:
select count(*) from ;
Dann zeigt er nur die Anzahl der Zeilen bzw. Datensätze an.

Nobody is perfect :wink:

Danke!

In psql kannst Du die Verwendung des pager via:

\pset pager off

abstellen.

Stimmt, danke @castorp