Livewebnet

Jump to content.

MySQL-Datenbank von Latin1 zu UTF8 konvertieren

Es kam der Wunsch auf, in eine bestehende Datenbank Sonderzeichen aus anderen Sprachen speichern zu können. Das schlug mit Latin1 fehl.

Die Lösung schien also UTF8 zu sein – der Weg dorthin war steinig.

Daher hier mal die Befehle, die nacheinander ausgeführt werden müssen, und bei mir zum Ergebnis geführt haben.

mysqldump -h SERVER --user=USER -p --default-character-set=latin1 -c --insert-ignore --skip-set-charset -r dump.sql DB_NAME


iconv -f ISO8859-1 -t UTF-8 dump.sql > dump_utf8.sql


perl -pi -w -e 's/CHARSET=latin1/CHARSET=utf8/g;' dump_utf8.sql


mysql --user=USER -p --execute="DROP DATABASE DB_NAME" -h SERVER


mysql --user=USER -p --execute="CREATE DATABASE DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;" -h SERVER


mysql --user=USER --max_allowed_packet=16M -h SERVER -p --default-character-set=utf8 DB_NAME < dump_utf8.sql

USER, SERVER und DB_NAME müssen natürlich ersetzt werden.