Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Copy Befehl ausführen

  1. #1
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard Copy Befehl ausführen

    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

  2. #2
    Avatar von Xandrian
    Xandrian ist gerade online Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    Hallo,

    superuser ist der Benutzer postgres. Mit

    Code:
    su - postgres
    wirst du auf der Konsole der Benutzer postgres und wenn du dich mit diesem auf die Datenbank verbindest sollte es gehen.

    cu tb.
    pg-forum.de unterstützen? Meine Wunschliste


  3. #3
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von nixdorf Beitrag anzeigen
    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
    don't work as root...

    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.
    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.
    Oder auf der Kommandozeile, in etwa:

    cat file.sql | psql -U lxoffice bank -s 'copy bla from stdin;'

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard

    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

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von nixdorf Beitrag anzeigen
    hallo,

    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:

    Code:
    kretschmer@KanotixBox:~$ cat t1.copy
    copy t1 from stdin;
    1       1
    1       2
    2       3
    2       4
    \.
    
    kretschmer@KanotixBox:~$
    - rufe dann auf:

    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard

    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

  7. #7
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard

    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

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von nixdorf Beitrag anzeigen
    Hallo Andreas,

    das sieht jetzt schon ganz gut aus.
    Fein.

    Anstadt Tabs habe ich Kommas, aber das scheint ja nicht zu stören, er meckert ja:
    Doch.

    ungültige Eingabesyntax für ganze Zahl, wenn das für das erste feld gleich gilt, das ist id (integer).
    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?

    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.
    ich nix phppgadmin. Das wird vermulich wissen, was zu tun ist.

    Noch eine Idee?
    Code:
    tr ',' '\t'
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard

    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

  10. #10
    nixdorf ist offline Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    66

    Standard

    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

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 09.07.2009, 10:07
  2. Funktionen ausführen
    Von jamax im Forum Trigger und Funktionen
    Antworten: 5
    Letzter Beitrag: 16.03.2009, 18:19
  3. Probleme mit Datumswert bei COPY- Befehl
    Von mari im Forum Allgemeines
    Antworten: 7
    Letzter Beitrag: 22.11.2007, 17:23
  4. psql und der copy -befehl
    Von joe89 im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 05.07.2006, 14:36
  5. COPY-Befehl aus Views
    Von tippex im Forum SQL
    Antworten: 4
    Letzter Beitrag: 06.01.2006, 14:07

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum