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

Chimera16

Aktiver Benutzer
Beiträge
26
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
 
Werbung:
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...
 
Werbung:
@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
 
Zurück
Oben