Hallo,
superuser ist der Benutzer postgres. Mit
wirst du auf der Konsole der Benutzer postgres und wenn du dich mit diesem auf die Datenbank verbindest sollte es gehen.Code:su - postgres
cu tb.
Hallo,
ich habe postgres neu installiert. Dann su postgres ausgefürt und
creatuser -d -P lxoffice
dann habe ich eine Datenbank (bank) mit lxoffice angelegt. eingeloggt habe ich mich im Admin-Tool ohne Passwort.
Jetzt möchte ich mit dem Befehl
COPY parts_temp
FROM '/home/name/lieferanten/preisliste.cvs';
Daten in die Tabelle parts_temp kopieren. Dazu habe ich mich als root mit
psql -U lxoffice bank
angemeldet. Das klappt, wenn ich aber dann den Befehl ausführe kommt:
FEHLER: nur Superuser können COPY mit Dateien verwenden
HINT: Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in psql funktioniert auch für jeden.
Wie werde ich Superuser? Wie lautet der Benutername und das Passwort vom Superuser?
Wie kann ich mit STDIN kopieren?
Gruß Nixdorf
Hallo,
superuser ist der Benutzer postgres. Mit
wirst du auf der Konsole der Benutzer postgres und wenn du dich mit diesem auf die Datenbank verbindest sollte es gehen.Code:su - postgres
cu tb.
don't work as root...
Normal. Das lesen der Datei macht der postmaster-prozeß, der läuft als User postgres, und dieser hat auf /home/bla/trallala keine Rechte. Packe die Datei z.B. nach /tmp und gib postgres da Rechte oder schreibe in die Datei oben den COPY-Befehl und zum Schluß das \. rein und source die mit \i innerhalb von psql.psql -U lxoffice bank
angemeldet. Das klappt, wenn ich aber dann den Befehl ausführe kommt:
FEHLER: nur Superuser können COPY mit Dateien verwenden
HINT: Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in psql funktioniert auch für jeden.
Oder auf der Kommandozeile, in etwa:
cat file.sql | psql -U lxoffice bank -s 'copy bla from stdin;'
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
hallo,
ich habe es mit:
cat /home/name/lieferanten/preisliste.csv | psql -U lxoffice bank -s 'copy parts_tmp from stdin;'
probiert. Bekomme aber da noch ein:
psql: Warnung: überflüssiges Kommandozeilenargument »copy parts_tmp from stdin;« ignoriert
Dann kann ich das Passwort eingeben und er listet mit die preisliste auf.
Was muß ich noch ändern, damit er das auch in die Tabelle parts_tmp packt?
Gruß Nixdorf
Am einfachsten ist es, du machst forlgendes:
- öffne die Datei, achte auf die Zeilen am Anfang und Ende. Etwa so:
- rufe dann auf:Code:kretschmer@KanotixBox:~$ cat t1.copy copy t1 from stdin; 1 1 1 2 2 3 2 4 \. kretschmer@KanotixBox:~$
psql test -f t1.copy
Das, was in der Datei steht, wirdso ausgeführt, als würdest Du es in psql eintippsen. Die Freiräume zwischen den Spalten sind TABs.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Hallo Andreas,
das sieht jetzt schon ganz gut aus.
wenn ich mich mit root zu su postgres wechsle, dann
psql bank -f preisliste.csv
ausführe erhalte ich:
postgres@debian:/home/frank/linbyte/lieferanten/actebis$ psql bank -f preisliste.csv
psqlreisliste.csv:1: FEHLER: ungültige Eingabesyntax für ganze Zahl: »1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","N",17.56,17.56,10.04.07,"N",0,"Verbrauchs material","f","f","f",0,15,79,151,"N","f","f","f", "N","N","N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","N","f",815,0,"N"«
CONTEXT: COPY parts_tmp, Zeile 1, Spalte id: »1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","N",17.56,17.56,10.04.07,"N",0,"Verbrauch. ..«
der erste teil meiner meiner CSV - Datei sieht so aus:
copy parts from stdin;
"id","partnumber","description","listprice","sellp rice","lastcost","priceupdate","weight","onhand"," notes","makemodel","assembly","alternate","rop","i nventory_accno_id","income_accno_id","expense_accn o_id","bin","shop","obsolete","bom","image","drawi ng","microfiche","partsgroup_id","ve","gv","itime" ,"mtime","unit","formel","not_discountable","buchu ngsgruppen_id","payment_id","ean"
1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","\N",17.56,17.56,10.04.07,"\N",0,"Verbrauc hsmaterial","f","f","f",0,15,79,151,"\N","f","f"," f","\N","\N","\N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","\N","f",815,0,"\N"
1001,1001158,"INTEL Pro100S 10/100 ServerNIC PCI RTL 168Bit","\N",40.9,40.9,10.04.07,"\N",0,"Netzwerkha rdware","f","f","f",0,15,79,151,"\N","f","f","f"," \N","\N","\N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","\N","f",815,0,"\N"
1002,1001159,"INTEL 5x Pro100S ServerNIC 168Bit PCI 10/100
Anstadt Tabs habe ich Kommas, aber das scheint ja nicht zu stören, er meckert ja:
ungültige Eingabesyntax für ganze Zahl, wenn das für das erste feld gleich gilt, das ist id (integer).
Aber die gleich CSV- Datei habe ich ja schon mit phppgadmin in die Datenbank verschoben. Auf dem Weg kann ich nur nicht die ganze Datei (50000 datensäte) hochladen.
Noch eine Idee?
Gruß Nixdorf
Hallo Andreas,
das sieht jetzt schon ganz gut aus.
wenn ich mich mit root zu su postgres wechsle, dann
psql bank -f preisliste.csv
ausführe erhalte ich:
postgres@debian:/home/frank/linbyte/lieferanten/actebis$ psql bank -f preisliste.csv
psqlreisliste.csv:1: FEHLER: ungültige Eingabesyntax für ganze Zahl: »1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","N",17.56,17.56,10.04.07,"N",0,"Verbrauchs material","f","f","f",0,15,79,151,"N","f","f","f", "N","N","N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","N","f",815,0,"N"«
CONTEXT: COPY parts_tmp, Zeile 1, Spalte id: »1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","N",17.56,17.56,10.04.07,"N",0,"Verbrauch. ..«
der erste teil meiner meiner CSV - Datei sieht so aus:
copy parts from stdin;
"id","partnumber","description","listprice","sellp rice","lastcost","priceupdate","weight","onhand"," notes","makemodel","assembly","alternate","rop","i nventory_accno_id","income_accno_id","expense_accn o_id","bin","shop","obsolete","bom","image","drawi ng","microfiche","partsgroup_id","ve","gv","itime" ,"mtime","unit","formel","not_discountable","buchu ngsgruppen_id","payment_id","ean"
1000,1001114,"HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c","\N",17.56,17.56,10.04.07,"\N",0,"Verbrauc hsmaterial","f","f","f",0,15,79,151,"\N","f","f"," f","\N","\N","\N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","\N","f",815,0,"\N"
1001,1001158,"INTEL Pro100S 10/100 ServerNIC PCI RTL 168Bit","\N",40.9,40.9,10.04.07,"\N",0,"Netzwerkha rdware","f","f","f",0,15,79,151,"\N","f","f","f"," \N","\N","\N",0,0,"0.00000","2007-04-16 12:46:07.497966","2007-04-16 15:26:33.434352","Stck","\N","f",815,0,"\N"
1002,1001159,"INTEL 5x Pro100S ServerNIC 168Bit PCI 10/100
Anstadt Tabs habe ich Kommas, aber das scheint ja nicht zu stören, er meckert ja:
ungültige Eingabesyntax für ganze Zahl, wenn das für das erste feld gleich gilt, das ist id (integer).
Aber die gleich CSV- Datei habe ich ja schon mit phppgadmin in die Datenbank verschoben. Auf dem Weg kann ich nur nicht die ganze Datei (50000 datensäte) hochladen.
Noch eine Idee?
Gruß Nixdorf
Fein.
Doch.Anstadt Tabs habe ich Kommas, aber das scheint ja nicht zu stören, er meckert ja:
Das erste Feld, was PG sieht, endet am TAB. Preisfrage: wo ist das TAB? Zusatzfrage: ist im ersten Feld, also vor dem ersten Tab, ein INT?ungültige Eingabesyntax für ganze Zahl, wenn das für das erste feld gleich gilt, das ist id (integer).
ich nix phppgadmin. Das wird vermulich wissen, was zu tun ist.Aber die gleich CSV- Datei habe ich ja schon mit phppgadmin in die Datenbank verschoben. Auf dem Weg kann ich nur nicht die ganze Datei (50000 datensäte) hochladen.
Noch eine Idee?AndreasCode:tr ',' '\t'
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Hallo,
ich habe anstadt Kommas Tabs, aber immer noch ist postgres noch nicht zufrieden mit mir.
So sieht jetzt der Anfang meiner CSV-Datei aus:
"copy parts_tmp from stdin"
"id" "partnumber" "description" "listprice" "sellprice" "lastcost" "priceupdate" "weight" "onhand" "notes" "makemodel" "assembly" "alternate" "rop" "inventory_accno_id" "income_accno_id" "expense_accno_id" "bin" "shop" "obsolete" "bom" "image" "drawing" "microfiche" "partsgroup_id" "ve" "gv" "itime" "mtime" "unit" "formel" "not_discountable" "buchungsgruppen_id" "payment_id" "ean"
1000 1001114 "HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c" "\N" 17.56 17.56 10.04.07 "\N" 0 "Verbrauchsmaterial" "f" "f" "f" 0 15 79 151 "\N" "f" "f" "f" "\N" "\N" "\N" 0 0 "0.00000" "2007-04-16 12:46:07.497966" "2007-04-16 15:26:33.434352" "Stck" "\N" "f" 815 0 "\N"
1001 1001158 "INTEL Pro100S 10/100 ServerNIC PCI RTL 168Bit" "\N" 40.9 40.9 10.04.07 "\N" 0 "Netzwerkhardware" "f" "f" "f" 0 15 79 151 "\N" "f" "f" "f" "\N" "\N" "\N" 0 0 "0.00000" "2007-04-16 12:46:07.497966" "2007-04-16 15:26:33.434352" "Stck" "\N" "f" 815 0 "\N"
Als Fehlermeldung bekomme ich jetzt:
psqlreisliste_2.csv:1: FEHLER: ungültige Eingabesyntax für ganze Zahl: »"id"«
CONTEXT: COPY parts_tmp, Zeile 1, Spalte id: »"id"«
Das ist die 1000 in der CSV-Datei. Danach kommt ein Tab. Eine ganze Zahl ist es doch auch.
Gruß Nixdorf
Hallo,
ich habe anstadt Kommas Tabs, aber immer noch ist postgres noch nicht zufrieden mit mir.
So sieht jetzt der Anfang meiner CSV-Datei aus:
"copy parts_tmp from stdin"
"id" "partnumber" "description" "listprice" "sellprice" "lastcost" "priceupdate" "weight" "onhand" "notes" "makemodel" "assembly" "alternate" "rop" "inventory_accno_id" "income_accno_id" "expense_accno_id" "bin" "shop" "obsolete" "bom" "image" "drawing" "microfiche" "partsgroup_id" "ve" "gv" "itime" "mtime" "unit" "formel" "not_discountable" "buchungsgruppen_id" "payment_id" "ean"
1000 1001114 "HP Nr15 Tinte schwarz 25ml HV DJ840c DJ843c" "\N" 17.56 17.56 10.04.07 "\N" 0 "Verbrauchsmaterial" "f" "f" "f" 0 15 79 151 "\N" "f" "f" "f" "\N" "\N" "\N" 0 0 "0.00000" "2007-04-16 12:46:07.497966" "2007-04-16 15:26:33.434352" "Stck" "\N" "f" 815 0 "\N"
1001 1001158 "INTEL Pro100S 10/100 ServerNIC PCI RTL 168Bit" "\N" 40.9 40.9 10.04.07 "\N" 0 "Netzwerkhardware" "f" "f" "f" 0 15 79 151 "\N" "f" "f" "f" "\N" "\N" "\N" 0 0 "0.00000" "2007-04-16 12:46:07.497966" "2007-04-16 15:26:33.434352" "Stck" "\N" "f" 815 0 "\N"
Als Fehlermeldung bekomme ich jetzt:
psqlreisliste_2.csv:1: FEHLER: ungültige Eingabesyntax für ganze Zahl: »"id"«
CONTEXT: COPY parts_tmp, Zeile 1, Spalte id: »"id"«
Das ist die 1000 in der CSV-Datei. Danach kommt ein Tab. Eine ganze Zahl ist es doch auch.
Gruß Nixdorf
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen