Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Script per Batch ausführen - Umlaute werden nicht angezeigt

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Chimera16, 11 Juli 2015.

  1. Chimera16

    Chimera16 Aktiver Benutzer

    Hallo,

    ich bin schon die letzten Tage am verzweifeln....

    Ich habe eine MySql Datenbank, dort sollen Produktdaten gespeichert werden.
    Ich habe eine Textdatei in der die Befehle stehen.
    Hier ein Auszug aus der Datei "Befehle.txt":
    ..
    INSERT INTO produkte.produktliste (HAN) SELECT * FROM (SELECT 'VFY:LT2R2XF021IN') AS tmp WHERE NOT EXISTS ( SELECT HAN FROM produkte.produktliste WHERE HAN='VFY:LT2R2XF021IN') LIMIT 1;
    UPDATE produkte.produktliste SET Bestand_I='0', Preis_I='3302.90', Beschreibung_I='ETERNUS LT S2 RoHSLaufwerk LTO6 Half-HightVerarbeitung von LTO 5 und LTO 6 Datenträger (wr/rd), LTO-4 Datenträger (rd)Schnittstelle SAS 6 Gb/s, SFF8088 Anschluss', Angebotspreis_I='0,00' , Bild_I='' , HAN='VFY:LT2R2XF021IN' , SKU_I='845641' , Kategorie_I='Storage' WHERE HAN='VFY:LT2R2XF021IN';
    ...
    Dahinter folgen weitere Statements, mehr als 100.000 die genau so aufgebaut sind. Wenn ich diese manuell in MySQL ausführe funktionieren Sie auch perfekt, wenn ich sie aber aus der Windows Konsole ausführe bricht der gespeicherte Wert ab einem Umlaut einfach ab. So wird aus "Zubehör" einfach "Zubeh", das Script läuft aber normal weiter.

    Mein Batch Befehl ist:
    "%Pfad%\mysql.exe" %user% %server% %password% -e "source Befehle.txt"

    Ich denke mal es hat etwas mit dem charset, entweder in Batch oder in MySQL zu tun, ich habe schon vieles in die Richtung probiert, bin aber zu keiner Lösung gekommen. Das Charset meiner Datenbank ist UTF-8. Wie schon oben geschrieben, ist meine Datenbank auch durchaus in der Lage die Umlaute darzustellen, da alles korrekt funktioniert wenn ich die Befehle direkt über HeidiSQL ausführe.

    Weiß Jemand wie ich die Textdatei mit Batch so ausführen kann, dass die Sonderzeichen korrekt in MySQL übernommen werden?

    Für Hilfe wäre ich sehr dankbar.
    Chimera16
     
  2. akretschmer

    akretschmer Datenbank-Guru

    vermutlich liegt es 'nur' an Einstellungen zum Charset, die in HeidiSQL passend gesetzt sind. Schau Dir an, wie die Sachen gesetzt sind, und vergleich mit der Batch-Ausführung. In PG wäre es sowas wie

    Code:
    test=*# show client_encoding;
     client_encoding
    -----------------
     UTF8
    (1 row)
    
    Das hier:

    "Wenn ich diese manuell in MySQL ausführe funktionieren Sie auch perfekt, wenn ich sie aber aus der Windows Konsole ausführe bricht der gespeicherte Wert ab einem Umlaut einfach ab. So wird aus "Zubehör" einfach "Zubeh", das Script läuft aber normal weiter." spricht natürlich für die Qualität Deiner DB...
     
  3. Chimera16

    Chimera16 Aktiver Benutzer

    @akretschmer Vielen Dank für deine Antwort!
    Konnte das Problem lösen, die Textdatei hatte das falsche charset.

    Ich habe das Programm Iconv für Windows benutzt. Nachdem ich folgende Befehlszeile ausführte klappt der Import der Textdatei:
    set iconv="C:\Program Files (x86)\GnaWin32\bin\iconv.exe"
    %iconv% -f CP1252 -t utf-8 Befehle.txt > Befehle2.txt

    Auch danke an alle die sich das Problem durchgelesen haben!
    Chimera16
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden