Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: dbf nach PostgreSQL konvertieren

  1. #11
    Alfredo ist offline Neuer Benutzer
    Registriert seit
    21.01.2009
    Ort
    bei Lüneburg
    Beiträge
    22

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Setze Dein client_encoding auf SJIS.

    Andreas
    Vor ein paar Tagen, warst Du der Meinung ich wäre schon Japaner.

    Zitat Zitat von akretschmer Beitrag anzeigen
    Bist Du Japaner? Ich frage, weil Du SJIS als Client-Codierung verwendest.

    Andreas
    Seit dem habe ich daran nichts geändert.

    In der Reference finde ich:

    Name Description Language Server? Bytes/Char Aliases
    SJIS Shift JIS Japanese No 1-2 Mskanji, ShiftJIS, WIN932, Windows932

    Server Character Set Available Client Character Sets
    SJIS not supported as a server encoding
    Kann es das wirklich sein?!

  2. #12
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Offensichtlich ist das Encoding (wohl auf Serverseite) aber so gesetzt. Und die Daten, die die Clientseite sendet, passen da nicht rein.

    Ich empfehle dir, im Online Handbuch mal zu Server Encoding und Client Encoding nachzulesen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #13
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Setze Dein client_encoding auf SJIS.

    Andreas
    Um das noch einmal zu erklären:

    meine DB läuft mit UTF8.

    Code:
    test=# set client_encoding='latin2';
    SET
    Zeit: 39,177 ms
    test=*# insert into testdata (tabellenspalte1) values ('äöü');
    INSERT 0 1
    Zeit: 0,270 ms
    test=*# rollback;
    ROLLBACK
    Zeit: 0,224 ms
    test=# set client_encoding='latin3';
    SET
    Zeit: 0,193 ms
    test=*# insert into testdata (tabellenspalte1) values ('äöü');
    ERROR:  character 0xc3 of encoding "LATIN3" has no equivalent in "UTF8"
    test=!# rollback;
    ROLLBACK
    Zeit: 0,130 ms
    test=# set client_encoding='SJIS';
    SET
    Zeit: 0,087 ms
    test=*# insert into testdata (tabellenspalte1) values ('äöü');
    INSERT 0 1
    Zeit: 0,243 ms
    test=*#
    Ich hab nun mal wild client_encoding gesetzt, und wie man sieht, gibt es Fälle, wo das dann bei identischen Daten, die ich einzugeben versuche, nicht funktioniert.

    Meine Frage, ob Du Japaner bist, rührte daher, daß in einem Deiner Postings Du das SJIS als Encoding verwendet hast. Möglicherweise war Dir nicht klar, was das ist und welche Folgen das hat.

    Summa summarum: das, was Du eingeben willst, muß sowohl durch die DB abbildbar sein als auch vom Client so kommen, daß es nötigenfalls in das Server-Encoding transformiert werden kann. Klappt das nicht, kommen die Dir bekannten Fehler.

    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. #14
    Alfredo ist offline Neuer Benutzer
    Registriert seit
    21.01.2009
    Ort
    bei Lüneburg
    Beiträge
    22

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Offensichtlich ist das Encoding (wohl auf Serverseite) aber so gesetzt. Und die Daten, die die Clientseite sendet, passen da nicht rein.

    Ich empfehle dir, im Online Handbuch mal zu Server Encoding und Client Encoding nachzulesen.
    Für denjenigen, der viel Erfahrung hat, nerve ich vielleicht. Mein Problem ist offensichtlich zu trivial, aber für meine Verhältnisse habe ich mich hier in Welten vorgewagt, die ich vorher noch nie betreten habe (oder musste) und gehöre nicht zur Trivialitätsentität. Deshalb bitte ich um etwas Rücksicht und tatsächliche Hilfe. Würde ich die Reference auswendig kennen, müsste ich hier nicht fragen.

    Außerdem bin ich mittlerweile mit den Nerven zu Fuß und kann nicht noch Tage diesem Problem hinterherlaufen.

    Mein jetziger Stand:

    Code:
    kani=# show server_encoding;
    server_encoding
    -----------------
    UTF8                    ---Server encoding also auf UTF8
    (1 row)
    
    kani-# \encoding        ---ist das nicht das Client encoding? dann wäre das doch auf SJIS
    SJIS
    Ist jemand willens mir zu helfen und mir kurz mal in Befehlen aufschreiben, wie ich dieses Problem schnell löse?

  5. #15
    Alfredo ist offline Neuer Benutzer
    Registriert seit
    21.01.2009
    Ort
    bei Lüneburg
    Beiträge
    22

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Um das noch einmal zu erklären:

    meine DB läuft mit UTF8.

    ...

    Meine Frage, ob Du Japaner bist, rührte daher, daß in einem Deiner Postings Du das SJIS als Encoding verwendet hast. Möglicherweise war Dir nicht klar, was das ist und welche Folgen das hat.

    Summa summarum: das, was Du eingeben willst, muß sowohl durch die DB abbildbar sein als auch vom Client so kommen, daß es nötigenfalls in das Server-Encoding transformiert werden kann. Klappt das nicht, kommen die Dir bekannten Fehler.

    Andreas

    Sorry Andreas, ich wollte dich nicht anpaulen. Da sind unser posts wohl über Kreuz gelaufen. Und wenn man noch nicht einmal die Steine sieht auf die man springen soll...

    Hier noch etwas Neues: Ich habe die csv-Datei von allen Umlauten gereinigt (!) und erhalte trotzdem:

    Code:
    kani=# COPY agns
            FROM E'D:\\agns II.csv'
            WITH DELIMITER ';' CSV HEADER
            ;
    ERROR:  invalid byte sequence for encoding "SJIS": 0xe13b
    HINT:  This error can also happen if the byte sequence does not match the encodi
    ng expected by the server, which is controlled by "client_encoding".
    CONTEXT:  COPY agns, line 40688

  6. #16
    sparrow ist offline Benutzer
    Registriert seit
    26.01.2007
    Beiträge
    34

    Standard

    Hallo Alfredo,

    ich hatte das Problem bisher noch nicht, aber was mir einfällt:

    Was passiert wenn du direkt vor dem copy-befehl das client-encoding setzt?:
    Ich hab nur leider keine Ahnung wie das Encoding unter Windows normalerweise aussieht, vielleicht
    Code:
    SET CLIENT_ENCODING='WIN1252';
    als SQL-Befehl direkt vor dem copy.

    Wo genau kommt die Datei denn her? Wenn die unter einem anderen Betriebssystem erstellt wurde könnte auch das das Problem sein.


    Gruß
    der Sparrow

  7. #17
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von Alfredo Beitrag anzeigen
    Code:
    kani-# \encoding        ---ist das nicht das Client encoding? dann wäre das doch auf SJIS
    SJIS
    Und wo kommt das SJIS her?
    Dein Client ist auf japanisch eingestellt, das muss schon eine Ursache haben.

    Wäre vielleicht für die Lösung des Problems praktisch, wenn du herausfindest wie das passiert. Danach löst sich wahrscheinlich dein anderes Problem auch mit auf.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #18
    Alfredo ist offline Neuer Benutzer
    Registriert seit
    21.01.2009
    Ort
    bei Lüneburg
    Beiträge
    22

    Standard

    Zitat Zitat von sparrow Beitrag anzeigen
    Hallo Alfredo,

    ich hatte das Problem bisher noch nicht, aber was mir einfällt:

    Was passiert wenn du direkt vor dem copy-befehl das client-encoding setzt?:
    Ich hab nur leider keine Ahnung wie das Encoding unter Windows normalerweise aussieht, vielleicht
    Code:
    SET CLIENT_ENCODING='WIN1252';
    als SQL-Befehl direkt vor dem copy.

    Wo genau kommt die Datei denn her? Wenn die unter einem anderen Betriebssystem erstellt wurde könnte auch das das Problem sein.

    Gruß
    der Sparrow
    Hallo Sparrow,
    Deinen Tipp probier ich morgen aus und werde berichten. Bin etwas fertig heute, deshalb schwächle ich.
    Die Dateien sind immer auf Windows gelaufen . Es sind 5 relational verknüpfte dBase-Dateien aus einer selbstgestrickten Datenbank inkl. Graphical Frontend (nicht von mir). Es werden von mir nach wie vor Daten eingegeben, die Datenqualität ist unterirdisch, es läuft auf einem Windows 98 Rechner und stürzt dauernd ab. Deshalb hege ich den dringenden Wunsch, dieses alte Programm mit der DB zu erneuern und endlich etwas vernünftiges davon zu machen. Der Export funktioniert über eine mit arj gestuffte Datei, die dann die 5 dBase-Dateien enthält.

    Zitat Zitat von ads Beitrag anzeigen
    Und wo kommt das SJIS her?
    Dein Client ist auf japanisch eingestellt, das muss schon eine Ursache haben.

    Wäre vielleicht für die Lösung des Problems praktisch, wenn du herausfindest wie das passiert. Danach löst sich wahrscheinlich dein anderes Problem auch mit auf.
    Bei der Installation von PostgreSQL, die ich vollständig und das erste Mal vor mittlerweile ganzen 4 Tagen bewerkstelligt habe, habe ich im Fenster "Datenbank-Cluster initialisieren" bei Encoding .... und Client.... nur eine Kombination gefunden, die überhaupt funktionierte. Das war dummerweise UTF8 und SJIS. Mit LATIN1 funktionierte bei Client gar nichts.
    Mir ist vollkommen egal warum! Für mich ist das "was-nun?" viel wichtiger. Also was schlägst du vor? Welche Kombination soll ich wie einstellen?

    Grüße
    Carsten

  9. #19
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von Alfredo Beitrag anzeigen
    Also was schlägst du vor? Welche Kombination soll ich wie einstellen?
    Latin1, UTF8, Win-*irgendwas, aber kein Japanisch.
    Damit holst du dir mehr Probleme als du löst.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  10. #20
    Alfredo ist offline Neuer Benutzer
    Registriert seit
    21.01.2009
    Ort
    bei Lüneburg
    Beiträge
    22

    Standard

    Moin moin,

    das Problem mit dem encoding scheint gelöst zu sein. Es funktioniert wohl mit LATIN1, UTF8 hat nicht geklappt. Vielen Dank so weit.

    Mein nächstes Problem sind wohl NULL-strings. Die Datei hat viele. Ich fang schon mal an zu basteln. Und melde mich, wenn ich soweit bin. Falls ihr vorher schoin mal einen Tipp hättet, würde ich mich freuen.
    Code:
    kani=# SET CLIENT_ENCODING='UTF8';
    SET
    
    kani=# \encoding
    UTF8
    
    kani=# COPY agns
            FROM E'D:\\agns.csv'
            WITH DELIMITER ';' CSV HEADER
            ;
    ERROR:  invalid byte sequence for encoding "UTF8": 0xdc52
    HINT:  This error can also happen if the byte sequence does not match the encodi
    ng expected by the server, which is controlled by "client_encoding".
    CONTEXT:  COPY agns, line 4420
    
    kani=# SET CLIENT_ENCODING='LATIN1';
    SET
    
    kani=# \encoding
    LATIN1
    
    kani=# COPY agns
            FROM E'D:\\agns.csv'
            WITH DELIMITER ';' CSV HEADER
            ;
    ERROR:  missing data for column "foto"
    CONTEXT:  COPY agns, line 57345: "DLT000002525;032015000;---;1;00001800;$HAEUP;4
    524"

Seite 2 von 3 ErsteErste 123 LetzteLetzte

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