ERROR: could not write to file "base/pgsql_tmp/pgsql_tmp60": No space left on device SQL state: 53100

Hallo zusammen!

Ich stehe vor folgendem Problem: Ich möchte eine neue Tabelle erstellen mit spezifischen Spalten aus anderen Tabellen. Dabei handelt es sich um keine sehr großen Datenmengen. Meine Query ist:

CREATE TABLE table_new AS
SELECT table_copy.*,
table_a.uniqueid_a,
table_b.uniqueid_b
FROM table_copy,
table_a,
table_b
ORDER BY participant, date, time;

Jedoch erscheint folgender Fehler: ERROR: could not write to file “base/pgsql_tmp/pgsql_tmp6055.0”: No space left on device SQL state: 53100

Mein zweiter Versuch, den ich mit einer “kleineren” Abfrage machen wollte, mit dem folgenden Script, bekam einen ähnlichen Fehler:

CREATE TABLE table_new AS
SELECT
table_copy.velocity AS velocity_uni,
table_copy.uniqueid_uni,
table_a.velocity AS velocity_a,
table_a.uniqueid_a,
table_b.velocity AS velocity_b,
table_b.uniqueid_b
FROM
table_copy,
table_a,
table_b;

ERROR: could not extend file “base/16645/5327629”: wrote only 4096 of 8192 bytes at block 48657 HINT: Check free disk space.SQL state: 53100

Im Internet und auch hier im Forum habe ich herausgefunden, dass mein temporärer Speicher voll ist. Ich würde also versuchen “Platz zu schaffen” in dem Ordner/Speicher, kann jedoch die files (base/…) die in den Fehlermeldungen angegeben sind, nicht finden. Und somit auch keinen Platz machen…

Gibt es eine andere Möglichkeit wieder “Platz zu machen”? Und wieso gibt es den file nicht, wenn er doch in der Fehlermeldung angegeben ist? Ich bin dankbar über jeden Hinweis.

Viele Grüße und danke für eure Hilfe.
Mimi

deine Selects sind jeweils ein CROSS JOIN. Wenn die eine Tabelle z.B. 100 Zeilen hat und die andere 1000, dann bekommst Du 100 * 1000 Zeilen. Vermutlich nicht exakt das, was Du willst, dafür aber SEHR groß.

1 Like

Wie schon gesagt, Du brauchst einen JOIN:

CREATE TABLE table_new AS
SELECT table_copy.*,
       table_a.uniqueid_a,
       table_b.uniqueid_b
FROM table_copy
  JOIN table_a ON ??? 
  JOIN table_b ON ??? 
;

Ausserdem ist das ORDER BY beim CREATE überflüssig. Das garantiert nicht ein sortiertes Resultat beim Lesen von der neuen Tabelle. Das Sortieren hat sicherlich auch viel Temp-Platz benötigt.

1 Like

Vielen Dank!
Das hat mir weitergeholfen.