pg_dump für einzelne Tabelle

Hallo,

ich hab in meiner Datenbank 13 Tabellen, und möchte nun aber nur bei einer Tabelle die Daten per pg_dump auslesen und in einer Datei speichern.

Ich habe das mit folgendem Befehl versucht:

pg_dump -U Benutzername -d Datenbankname -t Tabellenname > db.out

Egal, ob ich den Tabellenname in Anführungszeichen setze oder nicht, ich bekomme immer nur die Meldung:

pg_dump: Keine passenden Tabellen gefunden

Erst wenn ich den Tabellennamen weglasse, wird die komplette Datenbank in die Datei geschrieben, sowohl Struktur der Tabellen als auch Daten. Wie schaffe ich es, nur eine einzige Tabelle auszulesen?

Gruss
Bert

Liegt diese Tabelle im search_path des aufrufenden Users? Falls nein: gebe das Schema mit an, also schema.tabelle. Oder: verwendet die Tabelle im Namen Großbuchstaben? Dann quote den Namen anständig.

Andreas

Wo kann ich das mit dem search_path denn sehen bzw. einstellen? Also, es ist jedenfalls ein anderer User, der den pg_dump aufruft. Deshalb gebe ich ja den User der DB mit -U an. Wie schon gesagt, für die ganze Datenbank hat das geklappt, nur für die einzelne Tabelle nicht.

In dem Tabellennamen ist ein Grossbuchstabe drin. Der Name ist “Stamm”. Ich hab jetzt bei dem pg_dump auch mal das Schema mit angegeben, und auch alles in Anführungszeichen geschrieben:

public.Stamm
public.“Stamm”
“public”.“Stamm”
“public.Stamm”

Klappt aber alles trotzdem nicht.

Gruss
Bert



test=*# create table "Stamm" (i int);
CREATE TABLE                         
test=*# insert into "Stamm" values (1);
INSERT 0 1                             
test=*# commit;                        
COMMIT                                 
test=# \q                              
kretschmer@tux:~$ pg_dump -t '"Stamm"' test | wc -l
41
kretschmer@tux:~$

Andreas

Hallo,

das Quoting war bei mir wohl falsch. Mit

... '"Stamm"' ...

hat es dann auch prima geklappt. Danke für den Tipp…

Gruss
Bert

Und das nächste Mal lernen wir, dass SQL eigentlich alle Bezeichner groß geschrieben haben möchte. Und das PostgreSQL eigentlich alle Bezeichner klein geschrieben haben möchte.

Alles andere verursacht nur unnötig Aufwand und Probleme, weil man wirklich jeden Namen quoten muss.

OK, danke für diesen Tipp. Dann werde ich wohl alle meine Tabellennamen umändern und nur noch Kleinbuchstaben benutzen.

Gruss
Bert

Musst du nicht - aber vereinfacht die Arbeit ganz erheblich.

Hmm, na ja, wenn es die Arbeit vereinfacht, dann ist es ja fast doch schon Pflicht. Lieber sich gleich die bessere Schreibweise angewöhnen.

Gruss
Bert