Hallo *,
folgendes Problem: es gibt in einer MySQL-DB einen Satz Tabellen, welche in aller Unwissenheit mit dem Charset latin1 und der Collation latin1_german1_ci angelegt wurden. Ein Spaßvogel kam nun auf die Idee Daten mit Sonderzeichen und Umlauten zu importieren, was zur folge hat dass die Datensätze nun so aussehen:
"...Unternehmen ist für Schüler wie für Studenten..."
Ich würde nun eine neue DB anlegen, bei der die Tabellen UTF-8-Charsets haben. Aber wie konvertiere ich die mit mysqldump extrahierten Daten?
iconv kann mir zwar aus der ISO_8859-1-Codierung UTF-8-Daten produzieren, ignoriert aber diese Sonderzeichen.
Ideen?
Grüße /Marian
Marian Neubert marian@tesla-crew.de (Mo 25 Feb 2008 16:21:48 CET):
Hallo *,
folgendes Problem: es gibt in einer MySQL-DB einen Satz Tabellen, welche in aller Unwissenheit mit dem Charset latin1 und der Collation latin1_german1_ci angelegt wurden. Ein Spaßvogel kam nun auf die Idee Daten mit Sonderzeichen und Umlauten zu importieren, was zur folge hat dass die Datensätze nun so aussehen:
"...Unternehmen ist für Schüler wie für Studenten..."
Ich würde nun eine neue DB anlegen, bei der die Tabellen UTF-8-Charsets haben. Aber wie konvertiere ich die mit mysqldump extrahierten Daten?
Ein "alter table" sollte das auch können, aber das setzt voraus, daß Du einen Tabellentyp hast, der dem aktuellen Inhalt entspricht.
Aber auch das ging irgendwie - den Tabellen-Character-Set ändern, ohne die Daten dabei automatisch zu konviertieren. Und anschließend dann sowohl Tabellen-Char-Set als auch Daten-Char-Set konvertieren.
Irgendwo in der Mysql-Doc findet sich dazu was.
Am Montag, den 25.02.2008, 17:02 +0100 schrieb Heiko Schlittermann:
Ein "alter table" sollte das auch können, aber das setzt voraus, daß Du einen Tabellentyp hast, der dem aktuellen Inhalt entspricht.
Aber auch das ging irgendwie - den Tabellen-Character-Set ändern, ohne die Daten dabei automatisch zu konviertieren. Und anschließend dann sowohl Tabellen-Char-Set als auch Daten-Char-Set konvertieren.
Hmm stimmt, laut http://www.administrator.de/index.php?content=95ada108de18df7c6b9b43f92b95ea... stellt das eigenlich kein Problem dar, macht aber eine wahnsinnige Arbeit bei großen Tabellen.
Ich hab's nun anders gelöst: einen Dump der DB gemacht, in diesem für alle create-anweisungen die charsets und collations von latin1 auf utf8 geändert, ein "SET NAMES 'utf8';" davorgeschrieben und anschließend mit UTF-8-Encoding abgespeichert.
Der erneute Import brachte dann das gewünschte Ergebnis.
Grüße /Marian
lug-dd@mailman.schlittermann.de